Rails 3.2使用content_tag生成带有twitter-bootstrap图标的"删除"按钮

rai*_*dev 7 link-to ruby-on-rails-3 content-tag twitter-bootstrap

我试图在嵌套表单中使用Rails 3 content_tag方法复制"删除"按钮图标,并且不引人注意地使用jQuery(或者至少我希望如此).

Twitter-Bootstrap删除按钮图标(示例)

使用Firebug进行检查时生成的html如下.

<a class="btn btn-danger" href="#">
  <i class="icon-trash icon-white"></i>
  Delete
</a>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下内容生成带图标的按钮但不能添加"删除成分",也不会获得href的"#".

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

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

这会产生:

<a class="btn btn-danger remove_fields">
  <i class=icon-trash icon-white"></i>
</a>
Run Code Online (Sandbox Code Playgroud)

这是基于 Api dock - content_tag的信息

它有以下代码示例:

content_tag(:div, content_tag(:p, "Hello world!"), :class => "strong")
# => <div class="strong"><p>Hello world!</p></div>
Run Code Online (Sandbox Code Playgroud)

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

注意我可以使用link_to块来处理这个问题,但是想知道这是否可以在没有do..end的情况下在一行中完成,更重要的是在content_for方法中.

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

nod*_*rog 1

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

def link_to_delete
  link_to %{<i class="icon-trash icon-white"></i> Delete}, '#', class: "btn btn-danger remove_fields" 
end
Run Code Online (Sandbox Code Playgroud)

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

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

def delete_button
  %{<span class="btn btn-danger remove_fields"><i class="icon-trash icon-white"></i> Delete</span>}
end
Run Code Online (Sandbox Code Playgroud)

我不太喜欢 content_for 但是:

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

如果你想要一个 a 标签,只需更改:span:a