在Haml中的链接中执行ruby代码

在Haml中的链接中执行ruby代码,ruby,haml,Ruby,Haml,我希望在一个普通的Activerecord表中有一个“delete user”链接,但我不知道如何在haml中处理内联ruby 我有这个: %tbody - @users.each do |user| %tr %td= user.name %td= user.login %td %a %img{:src => '../images/delete.png', :title =

我希望在一个普通的Activerecord表中有一个“delete user”链接,但我不知道如何在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中是一个可点击的链接吗?

我想你想要

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

或者,如果您没有使用
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}"}

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

从:

如果插入由助手生成的内容,如链接,则更容易:

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

@詹姆斯的回答是正确的。不能将
user.destroy
方法分配给html链接。您唯一能做的就是将
user.destroy
方法放入控制器中的操作中,并创建一个调用此方法的链接@James answer展示了它的标准方式。我用的是Sinatra。有没有办法不用“链接到”和“图像标签”就能做到这一点?
%p== I like #{link_to 'chocolate', 'http://franschocolates.com'}!