Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Rails路由与:name而不是:id url参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为“公司”的控制器,而不是每个公司的URL被表示为:id我想要使用他们的名称:url / company / microsoft而不是url / company / 3.

在我的控制器中,我假设我会拥有

def show
   @company = Company.find(params[:name])
 end

因为url中不会有任何其他参数,我希望rails会明白:name引用了我公司模型中的:name列.我假设这里的魔法将在路线上,但是在这一点上我坚持不懈.

解决方法

PARAMS

底线是你正在看错误的解决方案 – params哈希键是相当无关紧要的,你需要能够更有效地使用它们中包含的数据.

您的路线将构建为:

#config/routes.rb
resources :controller #-> domain.com/controller/:id

这意味着如果您请求此路由:domain.com/controller/your_resource,params [:id]哈希值将是your_resource(无论如果它被称为params [:name]或params [:id])

friendly_id

您有几个建议friendly_id的答案的原因是因为这将覆盖ActiveRecord的查找方法,允许您在查询中使用slug

#app/models/model.rb
Class Model < ActiveRecord::Base
  extend FriendlyId
  friendly_id :name,use: [:slugged,:finders]
end

这可以让你这样做:

#app/controllers/your_controller.rb
def show
    @model = Model.find params[:id] #-> this can be the "name" of your record,or "id"
end

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – Rails路由与:name而不是:id url参数全部内容,希望文章能够帮你解决ruby-on-rails – Rails路由与:name而不是:id url参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: