在para_to中使用rails params.merge
我想在link_to块中添加一个URL参数。
代码当前 '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 => {:limit => ..., :sort => params[:sort]}
我得到了我需要的东西。 如果有一个排序参数,它会保持原样。
用这个
<%= link_to "Submit",{ :action => 'renderChart', :remote => true, :limit => 5, :sort => "desc"}, :class => "btn" %>
分离出html_options
: class
是一个html_option,所以最后传递它。
请参阅link_to文档。
UPDATE
根据OP在编辑EDIT部分的关注:
我从另一个看起来像这样的链接添加其他URL参数
link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"}
params :sort => "desc"
用于Toggle Sort Direction
链接,它们无法连接到Submit
链接。 当您单击特定链接时,链接中指定的params
将添加到params
散列中。 因此,如果您需要在点击Submit
链接时将:sort => "desc"
作为params传递,然后明确指定它们,如上面的答案所示。
您需要明确地分离哈希:
<%= 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', {} }
而这根本不是一个有效的哈希:)