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,相同的方法或多或少适用,除了查询本身。

希望对您有所帮助。