Ruby on rails 在ruby中构造字符串

Ruby on rails 在ruby中构造字符串,ruby-on-rails,ruby,ruby-on-rails-3,path,helper,Ruby On Rails,Ruby,Ruby On Rails 3,Path,Helper,我有一个模型叫书,另一个模型叫杂志 它们共享相同的索引视图,其中显示封面的图片。它们也根据其出现日期显示,因此这两个模型的实例在视图中混合 每个封面都有一个可点击的标签,并引导用户进入这本书或杂志的描述页面 现在,在我看来,我希望能够做到以下几点: <%= link_to document.title, "#{document.class.name.underscore}"_path(document) %> 因此,在book的情况下,当文档是书籍时,我希望这一行由book\u

我有一个模型叫
,另一个模型叫
杂志

它们共享相同的索引视图,其中显示封面的图片。它们也根据其出现日期显示,因此这两个模型的实例在视图中混合

每个封面都有一个可点击的标签,并引导用户进入这本书或杂志的描述页面

现在,在我看来,我希望能够做到以下几点:

<%= link_to document.title, "#{document.class.name.underscore}"_path(document) %>

因此,在book的情况下,当文档是书籍时,我希望这一行由
book\u path(document)
中的路径替换,当文档是杂志时,由
magazine\u path(document)
生成的路径替换

Àla bash脚本语法

我怎么会意识到这一点


多谢各位

您始终可以使用eval执行此操作

<%= link_to "Title", eval("#{document.class.name.underscore}_path(document)") %>

还有send,它更干净,但也有元编程:

<%= link_to "Title", send("#{document.class.name.underscore}_path", document) %>

试试:



多态路径在与模型一起执行时,检查传递的模型的类,将其带上下划线符号并执行
model\u name\u path
。似乎正是你需要的

我没有否决投票,但通常有比使用
eval
更好的方法。我理解。但我真的认为这就是@user3442206所要求的。我也没有投反对票!成功了!谢谢是的,这正是它的目的!更多信息请参见。非常优雅的解决方案!谢谢
<%= link_to document.title, polymorphic_path(document) %>