web-dev-qa-db-fra.com

Ajouter la classe css à l’assistant link_to de Rails

J'essaye de styler un lien Rails en utilisant css en utilisant le code suivant: 

<%= link_to "Learn More", :controller => "menus", :action => "index", :class => "btn btn-inverse" %>

Je m'attendrais à ce que cela crée un lien qui ressemble à ceci: 

<a href="menus/" class="btn btn-inverse">Learn More</a>

Au lieu de cela, Rails rend ceci - 

<a href="/menus?class=btn+btn-inverse">Learn More</a>

Quelqu'un d'autre a-t-il eu ce problème/sait ce que je fais mal? Je sais que je peux éviter ce problème en créant manuellement la balise d'ancrage plutôt qu'en utilisant helper, mais je me demandais s'il existait un moyen de transmettre les informations de classe css à l'aide elle-même. J'utilise Rails 3.2.6. 

Merci!

50
Blake

Vous avez un problème de syntaxe. Essayez ceci à la place:

<%= link_to "Learn More", {controller: "menus", action: "index"}, class: "btn btn-inverse" %>

Une documentation pour vous permettre d'aller plus loin avec le link_to Helper

Ils disent:

Soyez prudent lorsque vous utilisez le style d'argument plus ancien, car un hachage littéral supplémentaire est nécessaire:

link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article"
# => <a href="/articles" class="article" id="news">Articles</a>

Laisser le hachage donne le mauvais lien:

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
# => <a href="/articles/index/news?class=article">WRONG!</a>

Je vous recommande d'utiliser l'URL helper généré après la configuration de vos routes. Dans ton cas:

link_to "Learn More", menus_path, :class => "btn btn-inverse"

Un petit rappel sur les Helpers générés:

# routes.rb
resources :users

# any view/controller
users_path #=> /users
edit_user_path(user) #=> /users/:id/edit
user_path(user) #=> /users/:id  (show action)
new_user_path(user) #=> /users/new
99
MrYoshiji

Essayez une nouvelle convention d'argumentation:

<%= link_to 'Learn More', 'menus#index', class: 'btn btn-inverse' %>
3
Kamesh Prasad

J'ai résolu mon problème en passant 

<%= link_to image_tag("imageexamplo.png", class: 'class or id examplo css'),{controller: "user" , action: "index"}%>
0
Caetano

Voici comment je l'ai résolu en utilisant un autre moteur de vue,HAMLjuste au cas où un autre développeur aurait ce besoin

%i= link_to "Add New Blog Post", user_post_edit_new_url(current_user), :class  => "fa fa-plus-circle"
0
d1jhoni1b