2014-03-28 62 views
1

我想在link_to塊中添加一個URL參數。rails params.merge in link_to

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

但是這給了我一個錯誤。

它將:class和:action添加到url參數中,而不僅僅是:limit。爲什麼?

編輯:

我從另一個鏈接,看起來像這樣

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

添加其他網址參數,所以當用戶點擊其他鏈接我要限制添加到網址參數,並保持排序PARAMS

回答

1

我終於設法得到了一個解決方案。

如果我非常簡單地這樣做::params => {:limit => ..., :sort => params[:sort]}我得到正是我需要的東西。如果有一個排序參數,它保持它的方式。

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

而這根本就不是一個有效的哈希:)

+0

好吧,OP改變了這個問題:http://cl.ly/image/220X3f050o2Y/Screen%20Shot%202014-03-28%20at%2012.50.58%20PM.png。這是原始問題的正確答案。 – sethvargo

+0

我試過,但現在我只得到'class = btn'作爲url參數 – Killerpixler

+0

':class =>「btn」'是一個html_option,你傳遞的不正確。你在混合選項。 –

0

使用此

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

html_options分開:class是一個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散列中。因此,如果您需要在點擊Submit鏈接時通過:sort => "desc"作爲參數,然後指定它們明確,如我在上面的答案中所示。

+0

雖然覆蓋了現有的URL參數。我想添加:限制到現有的網址參數 – Killerpixler

+0

你到底如何添加其他參數到URL? –

+0

看到我上面的編輯 – Killerpixler