轨道params.merge中的link_to(rails params.merge in link

2019-10-19 16:46发布

我想在的link_to块添加URL参数。

目前的代码<%= link_to "Submit", :action => 'renderChart', :class => "btn", :remote => true, :params => params.merge(:limit => 5) %>

但是这给了我一个错误。

它添加了:类:动作到URL参数,而不仅仅是:限制。 为什么?

编辑:

我添加其他网址参数的其他链接,看起来像这样

link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"}

因此,当用户点击链接等我要限制添加到网址参数,并保持排序PARAMS

Answer 1:

我终于得到了一个解决方案自己。

如果我很简单地做到这一点: :params => {:limit => ..., :sort => params[:sort]}我得到正是我需要的。 如果有一种PARAM它保持它,它是这样的。



Answer 2:

用这个

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

分离出html_optionsclass是html_option所以最后通过。

请参阅的link_to文档。

UPDATE

由于每OP在问题的EDIT部分关注:

我添加其他网址参数的其他链接,看起来像这样

 link_to "Toggle Sort Direction",:action => 'renderChart', :remote => true, :params => {:sort => "desc"} 

PARAMS :sort => "desc"是用于Toggle Sort Direction链路和它们不能被连接到Submit链接。 当你点击一个特定的链接,在链接中指定PARAMS将被添加到params哈希值。 所以,如果你需要传递:sort => "desc"作为PARAMS在点击Submit链接则明确指定如图我的回答以上。



Answer 3:

你需要明确分开的哈希值:

<%= 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', {} }

而这根本就不是一个有效的哈希:)



文章来源: rails params.merge in link_to