2010-04-09 43 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'}!