如何仅在一个名称空间中使用友好ID

时间:2013-10-18 18:59:57

标签: ruby-on-rails ruby-on-rails-4 friendly-id

我正在使用rails 4中的gem friendly_id为我的用户的产品列表制作精美的网址。它通过覆盖to_param来工作。现在它在Shop命名空间中工作得非常好,这是我公共网站的公共部分,但是在Admin命名空间我宁愿使用常规ID,因为我不需要它们而且我相反,网址会更短。

我认为这很容易但是在挖掘之后它实际上看起来有点复杂。 to_param,因为它是模型的一部分,没有关于调用它的控制器的真实概念。所以我看到的唯一选项是覆盖url_for,因此它使用id Admin命名空间。我不知道如何做到这一点,如果真的是最好的粗略行动,因为弄乱url_for似乎有点危险。

2 个答案:

答案 0 :(得分:1)

使用FriendlyId5默认情况下不会覆盖查找器。

friendly_id :foo, use: :slugged # you must do MyClass.friendly.find('bar')
# or...
friendly_id :foo, use: [:slugged, :finders] # you can now do MyClass.find('bar')

这样,我猜你可以使用第一个选项,并取决于命名空间调用 MyClass.friendly.find('params[:id]') 要么 MyClass.find('params[:id]')

答案 1 :(得分:-1)

如果您不想使用to_params,可能需要使用friendly_id。更容易实现,以创建机器和人类友好的优秀友好网址 http://kapilrajnakhwa.com/blogs/user-friendly-urls-with-friendly_id-gem-in-rails-4