2010-04-09 25 views
4

我想在正常的Activerecord表中有一个“删除用户”链接,但我无法弄清楚如何在haml中将内联ruby进行缠绕。在Haml的链接中执行ruby代码

我有这样的:

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

我如何在Haml的的

- user.destroy 

可点击的链接?

+1

@詹姆斯的答案是正确的。 您不能将'user.destroy'方法分配给html链接。你唯一能做的就是把'user.destroy'方法放在控制器的一个动作中,并创建一个调用这个方法的链接。 @詹姆斯答案显示了这样做的标准方式。 – klew 2010-04-09 16:39:17

回答

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 => "https://stackoverflow.com/users/#{user.id}?_method=delete"} 
      %img{:src => '/images/delete.png', :title => "Delete #{user}"} 
+0

我正在使用Sinatra。有没有办法做到这一点没有“link_to”和“image_tag”? – thermans 2010-04-12 18:56:02

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

下面是在处理内联Ruby的一个很好的提示HAML。它甚至可以让你在链接之后有标点符号(注意“!”)(意思是真实内联)。

HAML FAQ

如果要插入,用一个帮手产生的东西,像一个链接,那么它会更简单:

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