【问题标题】:Execute ruby code in a link in Haml在 Haml 的链接中执行 ruby​​ 代码
【发布时间】:2010-04-09 15:28:57
【问题描述】:

我想在普通的 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 中的可点击链接?

【问题讨论】:

  • @James 的答案是正确的。您不能将 user.destroy 方法分配给 html 链接。您唯一能做的就是将user.destroy 方法放入控制器中的操作中,并创建一个调用此方法的链接。 @James 回答显示了标准的做法。

标签: ruby haml


【解决方案1】:

我想你想要

%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}"}

【讨论】:

  • 我正在使用 Sinatra。没有“link_to”和“image_tag”有没有办法做到这一点?
【解决方案2】:

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

来自HAML FAQ

如果您要插入由帮助程序生成的内容,例如链接,则更容易:

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

【讨论】:

    【解决方案3】:
    - @users.each do |user|
      = link_to user_path(user) do
        = image_tag 'delete.png', :title => 'Delete user'
    

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多