我有一个名为Book
的模型,另一个名为Magazine
。
它们共享相同的索引视图,其中显示了封面的图片。它们也根据它们的出现日期显示,因此这两个模型的实例在视图中混合...
每个封面都有一个可点击的标题,并引导用户进入这个特定书籍或杂志的描述页面......
现在在我看来,我希望能够做到这样的事情:
<%= link_to document.title, "#{document.class.name.underscore}"_path(document) %>
因此,在本书的情况下,我想要将此行替换为文档为书籍时book_path(document)
的路径,以及文档为杂志时magazine_path(document)
生成的路径。
Àlabash脚本语法......
我怎么会意识到这一点。
非常感谢!
答案 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) %>