Rails可变多态路由

时间:2013-07-12 03:09:25

标签: ruby-on-rails routes

我想将变量传递给部分路径。

有问题的模型如下所示:

 model Foo < ActiveRecord::Base
   has_many :dogs
   has_many :cats

我想要的路径是:

   <%= link_to "#{foo.name}", foo_dogs_path(foo) %>
   <%= link_to "#{foo.name}", foo_cats_path(foo) %>

我想使用“狗”或“猫”,具体取决于传入的变量animal_type。我知道我需要使用Polymorphic Routes,但我在编写此方案的语法时遇到了问题。

2 个答案:

答案 0 :(得分:2)

试试这个

link_to "dogs", [foo, :dogs]

在rails 3中可以正常工作

答案 1 :(得分:0)

我不知道多态路由,但对于这个简单的事情,你可以随时做:

<% if foo.class.name == "Cat" %>
    <%= link_to "#{foo.name}", foo_cats_path(foo) %>
<% else %>
    <%= link_to "#{foo.name}", foo_dogs_path(foo) %>
<% end %>

它可能不是超级优雅的,如果你继续寻找,我确信在Rails中有一个更加笨拙的方法,但它可以完成任务。