使用 link_to 传递附加参数

Pass additional parameters with link_to

我有一个新闻页面,其中包含几条带分页的新闻。我想让用户查看新的详细信息,当他单击 "back" 按钮时,视图会转到用户之前所在的页面。我的想法是向 link_to 添加一个参数,将用户带到显示页面,但这似乎不起作用:

<%= link_to news_path(new.id, :back_page => params[:page]) do %>
    <span class="glyphicon glyphicon-eye-open"></span>
<% end %>

我希望 url 渲染成这样:news/2?back_page=2。但我总是得到 news/2.

我该怎么做?

谢谢。

编辑

这是 news_path 在我的路线中的样子:http://pastebin.com/EAhDQyf4

此处示例:

link_to "Nonsense search", searches_path(foo: "bar", baz: "quux")
# => <a href="/searches?foo=bar&baz=quux">Nonsense search</a>

嗯,这不是 link_to 的问题,你能 post news_path 在你的路由文件中看起来如何吗?

理想情况下,news_path(new.id, :back_page => params[:page]) 以上应该会按您的预期生成路径。

另一种方法是,但我不推荐它。因为您应该能够使用路径助手来实现它。

<%= link_to "something", "#{news_path(new.id)}?back_page=#{params[:page]}" do %>
   <span class="glyphicon glyphicon-eye-open"></span>
<% end %>  

我解决了我的问题。确保您赋予附加参数的值是正确的。当我转到新闻索引页面时,即使选择的页面是第一页,也没有参数page=1。该参数仅在单击不同页面时出现(或者您转到另一个页面并返回到第一个页面)。如果你给 link_to 一个额外的参数并且它的值是空的,渲染的 link 将是(在我的例子中):

<a href="/news/2" />

而不是:

<a href="/news/2?back_page=" />

所以你可能会被困,就像我一样。