2011-05-08 4 views

Répondre

12

Essayez ceci:

Approche 1

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

Approche 2

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

Dans l'exemple ci-dessus lorsque x est égal à 1, la param2 valeur de clé est nulle. La méthode link_to ignore les clés évaluées nil.

+1

Merci. C'est très élégant. –

+0

J'ai mis à jour ma réponse avec une réponse supplémentaire. –

+0

J'ai remarqué que l'approche suggérée «@ MrRuru» 2 était devant moi. –

2

Je peux vous suggérer d'utiliser un hachage ici s'il y a beaucoup d'options en fonction de l'état:

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

Il est bonne idée de l'envelopper comme aide

4

Vous pouvez aussi le faire:

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