我正在使用rails 4中的gem friendly_id
为我的用户的产品列表制作精美的网址。它通过覆盖to_param
来工作。现在它在Shop
命名空间中工作得非常好,这是我公共网站的公共部分,但是在Admin
命名空间我宁愿使用常规ID,因为我不需要它们而且我相反,网址会更短。
我认为这很容易但是在挖掘之后它实际上看起来有点复杂。 to_param
,因为它是模型的一部分,没有关于调用它的控制器的真实概念。所以我看到的唯一选项是覆盖url_for
,因此它使用id
Admin
命名空间。我不知道如何做到这一点,如果真的是最好的粗略行动,因为弄乱url_for
似乎有点危险。
答案 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