用ruby构造字符串

时间:2014-08-15 18:34:58

标签: ruby-on-rails ruby ruby-on-rails-3 path helper

我有一个名为Book的模型,另一个名为Magazine

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

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

现在在我看来,我希望能够做到这样的事情:

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

因此,在本书的情况下,我想要将此行替换为文档为书籍时book_path(document)的路径,以及文档为杂志时magazine_path(document)生成的路径。

Àlabash脚本语法......

我怎么会意识到这一点。

非常感谢!

2 个答案:

答案 0 :(得分:3)

尝试:

<%= link_to document.title, polymorphic_path(document) %>

多态路径,当使用模型执行时,检查传递的模型的类,使其执行下划线表示法并执行model_name_path。似乎正是您所需要的。

答案 1 :(得分:0)

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

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

还有发送,这更干净,但也有元编程:

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