加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails路由与:name而不是:id url参数

发布时间:2020-12-16 20:03:03 所属栏目:百科 来源:网络整理
导读:我有一个名为“公司”的控制器,而不是每个公司的URL被表示为:id我想要使用他们的名称:url / company / microsoft而不是url / company / 3. 在我的控制器中,我假设我会拥有 def show @company = Company.find(params[:name]) end 因为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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读