Rails如何使用2个相同的slu ..

时间:2016-02-25 09:21:36

标签: ruby-on-rails duplicates slug

我在我的项目中使用slu to给我的params另一个名字,但我有两个名称:“how-does-it-work”。 (... /投资/如何-做,它工作) (... /客户/如何-做,它工作) 我想使用slug作为他们目前的设置方式。 有没有办法做到这一点?

2 个答案:

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

希望这有帮助。