Ruby on rails 如何将链接_中的可选参数传递给?

Ruby on rails 如何将链接_中的可选参数传递给?,ruby-on-rails,Ruby On Rails,我有这样一个链接: <%= link_to 'something', some_path(:param1 => something, :param2 => something) %> something,:param2=>something)%> 如何使param2成为可选的?我想根据条件将其包括在内。尝试以下操作: 方法1 <%= link_to 'something', some_path( {:param1 => something}.merge

我有这样一个链接:

<%= link_to 'something', some_path(:param1 => something, :param2 => something) %>
something,:param2=>something)%>
如何使param2成为可选的?我想根据条件将其包括在内。

尝试以下操作:

方法1

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

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

在上面的示例中,当x等于1时,
param2
键值为nil。
link\u to
方法忽略
nil
值键。

如果有许多基于条件的选项,我建议您在此处使用哈希:

<% 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) %>
“胡说八道”如果出现这种情况
参数[:param2]=>“诸如此类”如果条件
参数[:param3]=>“诸如此类”如果条件
参数[:param4]=>“诸如此类”如果条件
参数[:param5]=>如果条件%>
将其包装为助手是个好主意

您也可以这样做:

<%= link_to 'something', some_path(:param1 => 'something', :param2 => ('something else' if some_condition)) %>
'something',:param2=>('something other'如果是某个条件))%>

谢谢。这非常优雅。我注意到
@MrRuru
在我面前建议了方法2。