Ruby on rails rails参数在链接中合并到

Ruby on rails rails参数在链接中合并到,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我试图在链接块中添加URL参数 当前代码'renderChart',:class=>“btn”,:remote=>true,:params=>params.merge(:limit=>5)%> 但这给了我一个错误 它将:class和:action添加到url参数中,而不仅仅是:limit。为什么? 编辑: 我从另一个链接添加了其他URL参数,如下所示 link_to "Toggle Sort Direction",:action => 'renderChart', :remote =&g

我试图在链接块中添加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"}
link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"}

因此,当用户单击另一个链接时,我想将限制添加到url参数并保留排序参数,您需要显式地分隔散列:

<%= link_to "Submit", { :action => 'renderChart', :class => "btn", :remote => true }, params.merge(:limit => 5) %>
但最后一件事——不是键值对——是散列。所以说真的,你有这个:

{ :action => 'renderChart', :class => "btn", :remote => true, { ... } }
如果从混合料中取出轨道:

{ x: 'value', {} }
这根本不是一个有效的散列:)

使用这个

<%= link_to "Submit",{ :action => 'renderChart', :remote => true, :limit => 5, :sort => "desc"}, :class => "btn" %>

参数
:sort=>“desc”
用于
切换排序方向
链接,不能连接到
提交
链接。单击特定链接时,链接中指定的参数将添加到
params
散列中。因此,如果您需要在单击
Submit
链接时将
:sort=>“desc”
作为参数传递,然后明确指定它们,如上面的回答所示。

我终于自己找到了解决方案


如果我非常简单地这样做:
:params=>{:limit=>…,:sort=>params[:sort]}
我得到了我所需要的。如果有排序参数,它会保持原样。

这会覆盖现有的URL参数。我想添加:限制现有url参数显示您是否正在向url添加其他参数?这些参数用于
切换排序方向
链接,您没有单击该链接,因此这些参数无论如何都不会添加到参数哈希中。如果在单击“提交”按钮时还需要在哈希中传递它们,那么也要为此链接显式传递它们。@Killerpixler为什么要对试图帮助您的人的答案投反对票?@Killerpixler添加了更详细的解释,以澄清您对params哈希创建方式的担忧。另外,如果您因为对
链接
以及
参数如何工作的了解不足而投票否决了我,那么这是错误的。我们是来帮助你的。嗯,OP改变了问题:。这是对原始问题的正确答案。我尝试过,但现在我只得到了
class=btn
,因为url参数
:class=>“btn”
是一个html\u选项,您传递它的方式不正确。您正在混合各种选项。
link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"}