2011-05-08 25 views

回答

12

嘗試這種情況:

方法1種

<%= link_to 'something', some_path(
    {:param1 => something}.merge((x==1) ? {:param2 => something} : {}) %> 

方法2

<%= link_to 'something', some_path(:param1 => 1, :param2 => (2 if x==1)) %> 

在上述例子中,當x等於1,則param2密鑰值是零。 link_to方法會忽略nil有價值的密鑰。

+1

謝謝。這非常優雅。 – 2011-05-08 20:17:07

+0

我已經更新了我的答案並附加了一個答案 – 2011-05-08 21:32:30

+0

我發現'@ MrRuru'建議的方法2在我之前。 – 2011-05-08 21:33:23

2

我可以建議你如果有很多基於條件選擇在這裏使用的哈希:

<% params = {} 
    params[:param1] => "blah-blah" if condition 
    params[:param2] => "blah-blah" if condition 
    params[:param3] => "blah-blah" if condition 
    params[:param4] => "blah-blah" if condition 
    params[:param5] => "blah-blah" if condition %> 
<%= link_to 'something', some_path(params) %> 

這是好主意,它包裝成一個幫手

4

你也可以這樣做:

<%= link_to 'something', some_path(:param1 => 'something', :param2 => ('something else' if some_condition)) %>