我在我的项目中使用slu to给我的params另一个名字,但我有两个名称:“how-does-it-work”。 (... /投资/如何-做,它工作) (... /客户/如何-做,它工作) 我想使用slug作为他们目前的设置方式。 有没有办法做到这一点?
答案 0 :(得分:0)
那么,/ investor /和/ customer /两个部分都是slug?
如果是这种情况,您可以拆分字符串,并根据“投资者”或“客户”分组中的“如何操作”进行搜索。
如果投资者和客户都是路线的一部分,那么你应该没有困难,因为他们指的是两种不同的控制器方法。您应该能够根据与数据对应的每种方法编写搜索。如果数据相同,那么您所做的就是使用正确的参数将控制器指向正确的模型数据。
如果你正在使用friendlyId,它通常会内置候选匹配。此外,如果您想要将多个页面匹配到相同的段落(我过去已经完成),您可以根据结果的数量进行渲染,如果您愿意,也可以显示结果页面。
答案 1 :(得分:0)
创建两个不同的路由/控制器,并在ActiveRecord
操作中查询相应的show
模型。假设您的模型上有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,那么或多或少适用相同的方法,除了查询本身。
希望这有帮助。