2010-04-09 6 views
4

Je veux avoir un lien "supprimer un utilisateur" dans une table Activerecord normale, mais je ne peux pas comprendre comment draguer le ruby ​​inline dans haml.Exécuter le code ruby ​​dans un lien dans Haml

J'ai ceci:

%tbody 
    - @users.each do |user| 
     %tr 
     %td= user.name 
     %td= user.login 
     %td 
      %a 
      %img{:src => '../images/delete.png', :title => 'Delete user'} 

Comment puis-je faire la

- user.destroy 

un lien cliquable dans Haml?

+1

réponse est correcte @ James. Vous ne pouvez pas affecter la méthode 'user.destroy' à un lien html. La seule chose que vous pouvez faire est de mettre la méthode 'user.destroy' dans une action dans un contrôleur, et de créer un lien qui appelle cette méthode. La réponse @James montre la façon standard de le faire. – klew

Répondre

7

Je pense que vous voulez

%tbody 
- @users.each do |user| 
    %tr 
    %td= user.name 
    %td= user.login 
    %td 
     = link_to image_tag('delete.png', :title => "Delete #{user}"), user_path(user), :method => :delete) 

Voir ActionView::Helpers::UrlHelper#link_to

Ou, si vous ne l'utilisez ActionPack,

%tbody 
    - @users.each do |user| 
    %tr 
     %td= user.name 
     %td= user.login 
     %td 
     %a{:href => "https://stackoverflow.com/users/#{user.id}?_method=delete"} 
      %img{:src => '/images/delete.png', :title => "Delete #{user}"} 
+0

J'utilise Sinatra. Y at-il un moyen de le faire sans "link_to" et "image_tag"? – thermans

1
- @users.each do |user| 
    = link_to user_path(user) do 
    = image_tag 'delete.png', :title => 'Delete user' 
2

est ici une bonne astuce sur la manipulation en ligne Ruby HAML. Il vous permet même d'avoir de la ponctuation (notez le "!") Après les liens (c'est-à-dire vraiment en ligne).

De l'HAML FAQ:

Si vous insérez quelque chose qui est généré par un assistant, comme un lien, il est encore plus facile:

%p== I like #{link_to 'chocolate', 'http://franschocolates.com'}! 
Questions connexes