我正在尝试在link_to块中添加一个URL参数。
目前的代码<%= link_to "Submit", :action => 'renderChart', :class => "btn", :remote => true, :params => params.merge(:limit => 5) %>
但这给了我一个错误。
它将:class和:action添加到url参数中,而不仅仅是:limit。为什么呢?
编辑:
我从另一个看起来像这个
的链接中添加了其他URL参数link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"}
所以当用户点击其他链接时,我想将限制添加到url params并保留sort params
答案 0 :(得分:1)
我终于设法自己找到了解决方案。
如果我只是这样做::params => {:limit => ..., :sort => params[:sort]}
我完全得到了我需要的东西。如果有一个排序参数,它会保持原样。
答案 1 :(得分:0)
使用此
<%= link_to "Submit",{ :action => 'renderChart', :remote => true, :limit => 5, :sort => "desc"}, :class => "btn" %>
单独列出html_options
:class
是一个html_option,所以最后传递它。
请参阅 link_to 文档。
<强>更新强>
根据OP在问题的编辑部分中的关注:
我从另一个看起来像这个
的链接中添加了其他URL参数link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"}
参数:sort => "desc"
用于Toggle Sort Direction
链接,但无法连接到Submit
链接。当您单击特定链接时,链接中指定的参数将添加到params
哈希。因此,如果您在点击:sort => "desc"
链接时需要将Submit
作为参数传递,请在上面的回答中明确指出明确。
答案 2 :(得分:-1)
您需要明确区分哈希值:
<%= link_to "Submit", { :action => 'renderChart', :class => "btn", :remote => true }, params.merge(:limit => 5) %>
取出link_to
,你有一个隐式哈希(键值对),Ruby足够聪明,知道你想要一个哈希:
:action => 'renderChart', :class => "btn", :remote => true, params.merge(:limit => 5)
但最后一件事 - 它不是一个键值对 - 它是一个哈希。真的,你有这个:
{ :action => 'renderChart', :class => "btn", :remote => true, { ... } }
如果你把Rails排除在外:
{ x: 'value', {} }
这根本不是有效的哈希:)