我正在尝试将评论部分用于博客和视频模型。这是博客节目页面,要求评论部分并传递@blog作为模型(我将在视频的节目页面上传递@video):
<%= render :partial => 'comments/comments', :locals => {:model => @blog} %>
下一个代码是将评论排序为最新的/最早的:
<% if @comments.count > 1 %>
<span class="list_order">
<%= link_to('Newest First', model, :order => "DESC", :anchor => "comments") + " | " +
link_to('Oldest First', model, :order => "ASC", :anchor => "comments") %>
</span>
<% end -%>
当我说:
时,这很好用link_to('Newest First', blog_path(@blog, :order => "DESC".... etc.)
但我知道你也可以通过:
link_to('Newest First', @blog)
它将自动转到博客显示页面。所以在我的代码中,我正在传递“模型”本地,它确实刷新了页面,但它没有采用我的参数:order或:anchor。当仅使用实例变量而不是link_to方法上的路径时,如何传递参数?
答案 0 :(得分:1)
好的,我终于有机会问我的一个朋友,并找到了解决方案。我需要使用多态路径。因此,在上面的示例中,以下代码有效:
<%= link_to('Newest First', polymorphic_path(model, :order => "DESC", :anchor => "comments") + " | " + link_to('Oldest First', polymorphic_path(model, :order => "ASC", :anchor => "comments") %>
然后它知道为所使用的变量生成正确的路径。以下是一些信息: http://apidock.com/rails/ActionDispatch/Routing/PolymorphicRoutes/polymorphic_path