【问题标题】:Rails 3.2 using content_tag to generate a 'Delete' button with twitter-bootstrap iconsRails 3.2 使用 content_tag 生成带有 twitter-bootstrap 图标的“删除”按钮
【发布时间】:2012-04-25 09:32:18
【问题描述】:

我正在尝试使用 Rails 3 content_tag 方法在嵌套表单中复制此示例中的删除按钮图标,并使用 jQuery 不显眼(或者至少我希望如此)。

Twitter-Bootstrap Delete Button icon (example)

使用 Firebug 检查时生成的 html 如下。

<a class="btn btn-danger" href="#">
  <i class="icon-trash icon-white"></i>
  Delete
</a>

我正在使用以下内容生成带有图标的按钮,但无法向其中添加“删除成分”,也无法获得 href 的“#”。

这是我在部分成分中的代码:

<%= link_to content_tag(:a, content_tag(:i, '', class: "icon-trash icon-white"), class: "btn btn-danger remove_fields") %>

这会生成:

<a class="btn btn-danger remove_fields">
  <i class=icon-trash icon-white"></i>
</a>

这是基于来自 Api dock - content_tag

其中有以下代码示例:

content_tag(:div, content_tag(:p, "Hello world!"), :class => "strong")
# => <div class="strong"><p>Hello world!</p></div>

有人能指出我正确的方向吗?为什么我缺少上面提到的细节?

注意我可以让它与 link_to 块一起工作,但想知道这是否可以在没有 do..end 的情况下在一行中完成,更重要的是在 content_for 方法中完成。

<%= link_to('#', class: "btn btn-danger remove_fields") do %>
  <i class: "icon-trash icon-white"></i>
  Delete
<% end %>

【问题讨论】:

    标签: ruby-on-rails-3 twitter-bootstrap link-to content-tag


    【解决方案1】:
    <%= link_to(body, url, html_options = {}) %>
    

    所以您在 1 行中的请求是:

    <%= link_to content_tag(:i, "", class: "icon-trash icon-white") + "Delete", path_to_stuff, method: :delete, class: "btn btn-danger remove_fields" %>
    

    最复杂的部分是“身体”。您只需要记住所有这些 content_tag 帮助器(包括 link_to 和其他)都返回一个字符串。

    但是,这很难看。而且很长。并且难以维护。因此,您提出的采用阻塞的解决方案要好得多。

    【讨论】:

      【解决方案2】:

      为什么不创建一个视图辅助方法

      def link_to_delete
        link_to %{<i class="icon-trash icon-white"></i> Delete}, '#', class: "btn btn-danger remove_fields" 
      end
      

      然后在你的视图中调用它link_to_delete

      虽然你为什么需要它作为一个链接

      def delete_button
        %{<span class="btn btn-danger remove_fields"><i class="icon-trash icon-white"></i> Delete</span>}
      end
      

      我不太喜欢 content_for 但是:

      content_tag(:span, %{#{content_tag(:i, nil, :class => "icon-trash icon-white")} Delete}.html_safe, :class => "btn btn-danger remove_fields")
      

      如果你想要它带有 a 标签,只需将 :span 更改为 :a

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 2014-06-05
        • 1970-01-01
        • 2013-05-29
        • 2013-10-11
        相关资源
        最近更新 更多