如何在link_to中传递可选参数?

时间:2011-05-08 20:11:12

标签: ruby-on-rails

我有一个类似的链接:

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

如何让param2成为可选项?我想根据条件加入它。

3 个答案:

答案 0 :(得分: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键值为nil。 link_to方法忽略了nil有价值的密钥。

答案 1 :(得分:4)

你也可以这样做:

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

答案 2 :(得分: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) %>

最好把它包装成帮手