【问题标题】:Pass additional parameters with link_to使用 link_to 传递附加参数
【发布时间】:2015-03-15 17:36:48
【问题描述】:

我有一个包含多个分页新闻的新闻页面。我想让用户查看新的详细信息,当他单击“返回”按钮时,视图会转到用户之前所在的页面。我的想法是向 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

【问题讨论】:

  • 能否请您出示您的路线?
  • 当然,我编辑了我的问题。
  • 各位,我的问题解决了!非常感谢您的时间和帮助!

标签: ruby-on-rails ruby-on-rails-3 link-to


【解决方案1】:

这不是 link_to 的问题,你能把news_path 在你的路由文件中的样子贴出来吗?

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

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

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

【讨论】:

  • @BishopBarber 转到 rails 控制台并尝试关注 app.news_path(new.id, :back_page =&gt; 'somepagenumber') 这应该会生成您正在寻找的路径。
  • 有趣的是,back_page 参数按需要呈现。
  • 我发现了我的问题,我真的觉得自己很愚蠢。只是我去新闻索引页面的时候,没有给出page参数。它仅在我浏览页面时给出。所以我的 back_page 参数什么也没收到。我以为通常我仍然会看到back_page=,这就是为什么我一开始不认为这会是问题,但它是!非常感谢您的帮助。我不知道如何使用 link_to,这就是为什么我看错了方向。
  • 太好了,很高兴我能帮上忙。 :)
【解决方案2】:

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

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

代替:

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

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

【讨论】:

    【解决方案3】:

    这里举例:

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

    【讨论】:

    • 我知道,我访问过this post。但我看不出我的 link_to 有什么问题。你能解释一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2017-12-08
    相关资源
    最近更新 更多