gpt4 book ai didi

ruby-on-rails - 用:name代替:id url参数的Rails路由

转载 作者:行者123 更新时间:2023-12-03 08:59:26 24 4
gpt4 key购买 nike

我有一个名为“companies”的 Controller ,而不是每个公司的网址都用:id表示,我希望该网址使用其:name,例如:url/company/microsoft而不是url/company/3

在我的 Controller 中,我假设我会

 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_resourceparams[:id]哈希值将为 your_resource(无论它是 params[:name]还是 params[:id]都无关紧要)

-

friendly_id

推荐 friendly_id的答案有几个,是因为它覆盖了 findActiveRecord方法,允许您在查询中使用 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 - 用:name代替:id url参数的Rails路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24226378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com