Rails 如何使用 2 个相同的子弹
Rails how to use 2 of the same slugs
我在我的项目中使用 slugs 为我的参数命名,但我有两个参数名为:"how-does-it-work"。
(.../investor/how-does-it-work)
(.../customer/how-does-it-work)
我想使用 slugs 作为它们当前的设置方式。
有办法吗?
那么,/investor/ 和 /customer/ 都是 slug 的一部分吗?
如果是这样,你可以拆分字符串,在"investor"或"customer".
的分组中根据"how-does-it-work"进行搜索
如果投资者和客户都是路线的一部分,那么您应该不会遇到困难,因为他们指向两种不同的控制器方法。您应该能够根据与数据相对应的每种方法编写搜索。如果数据相同,您所做的就是将控制器指向具有正确参数的正确模型数据。
如果您使用的是 friendlyId,它通常内置了候选匹配功能。此外,如果您打算将多个页面与同一个 slug 匹配(我过去做过),您也可以根据结果数量显示结果页面。
创建两个不同的routes/controllers,并在show
操作中简单地查询相应的ActiveRecord
模型。假设您的模型上有一个 slug
字段:
Rails.application.routes.draw do
resources :customers
resources :investors
end
class CustomersController < ApplicationController
def show
@customer = Customer.find_by(slug: params[:id])
end
end
class InvestorsController < ApplicationController
def show
@investor= Investor.find_by(slug: params[:id])
end
end
这可能是Rails中解决这个问题最常规的方法了。如果您使用 friendly_id gem,相同的方法或多或少适用,除了查询本身。
希望对您有所帮助。
我在我的项目中使用 slugs 为我的参数命名,但我有两个参数名为:"how-does-it-work"。 (.../investor/how-does-it-work) (.../customer/how-does-it-work) 我想使用 slugs 作为它们当前的设置方式。 有办法吗?
那么,/investor/ 和 /customer/ 都是 slug 的一部分吗?
如果是这样,你可以拆分字符串,在"investor"或"customer".
的分组中根据"how-does-it-work"进行搜索如果投资者和客户都是路线的一部分,那么您应该不会遇到困难,因为他们指向两种不同的控制器方法。您应该能够根据与数据相对应的每种方法编写搜索。如果数据相同,您所做的就是将控制器指向具有正确参数的正确模型数据。
如果您使用的是 friendlyId,它通常内置了候选匹配功能。此外,如果您打算将多个页面与同一个 slug 匹配(我过去做过),您也可以根据结果数量显示结果页面。
创建两个不同的routes/controllers,并在show
操作中简单地查询相应的ActiveRecord
模型。假设您的模型上有一个 slug
字段:
Rails.application.routes.draw do
resources :customers
resources :investors
end
class CustomersController < ApplicationController
def show
@customer = Customer.find_by(slug: params[:id])
end
end
class InvestorsController < ApplicationController
def show
@investor= Investor.find_by(slug: params[:id])
end
end
这可能是Rails中解决这个问题最常规的方法了。如果您使用 friendly_id gem,相同的方法或多或少适用,除了查询本身。
希望对您有所帮助。