J'ai un lien comme:Comment passer un paramètre facultatif dans link_to?
<%= link_to 'something', some_path(:param1 => something, :param2 => something) %>
Comment puis-je faire param2 en option? Je veux l'inclure en fonction d'une condition.
J'ai un lien comme:Comment passer un paramètre facultatif dans link_to?
<%= link_to 'something', some_path(:param1 => something, :param2 => something) %>
Comment puis-je faire param2 en option? Je veux l'inclure en fonction d'une condition.
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
.
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
Vous pouvez aussi le faire:
<%= link_to 'something', some_path(:param1 => 'something', :param2 => ('something else' if some_condition)) %>
Merci. C'est très élégant. –
J'ai mis à jour ma réponse avec une réponse supplémentaire. –
J'ai remarqué que l'approche suggérée «@ MrRuru» 2 était devant moi. –