将link_to与实例变量和参数一起使用

时间:2011-08-22 00:42:13

标签: ruby-on-rails instance-variables link-to

我正在尝试将评论部分用于博客和视频模型。这是博客节目页面,要求评论部分并传递@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方法上的路径时,如何传递参数?

1 个答案:

答案 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