Как передать необязательный параметр в link_to? - PullRequest
4 голосов
/ 09 мая 2011

У меня есть ссылка как:

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

Как я могу сделать param2 необязательным? Я хочу включить его в зависимости от условия.

Ответы [ 3 ]

12 голосов
/ 09 мая 2011

Попробуйте это:

Подход 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.

4 голосов
/ 09 мая 2011

Вы также можете сделать это:

<%= link_to 'something', some_path(:param1 => 'something', :param2 => ('something else' if some_condition)) %>
2 голосов
/ 09 мая 2011

Я могу предложить вам использовать хеш здесь, если есть много опций на основе условий:

<% 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) %>

Это хорошая идея, чтобы обернуть это как помощник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...