在Haml的链接中执行ruby代码

时间:2010-04-09 15:28:57

标签: ruby haml

我希望在普通的Activerecord表中有一个“删除用户”链接,但我无法弄清楚如何在haml中纠缠内联ruby。

我有这个:

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

如何制作

- user.destroy

是Haml的可点击链接吗?

3 个答案:

答案 0 :(得分:7)

我想你想要

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

请参阅ActionView::Helpers::UrlHelper#link_to

或者,如果您没有使用ActionPack

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

答案 1 :(得分:2)

这是在HAML中处理内联Ruby的一个很好的技巧。它甚至允许你在链接后使用标点符号(注意“!”)(意思是真正的内联)。

来自HAML FAQ

如果您正在插入由助手(如链接)生成的内容,那么它就更容易了:

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

答案 2 :(得分:1)

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