7

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

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

使用 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 码头的信息 - 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 %>
4

2 回答 2

3
<%= 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 和其他)都返回一个字符串。

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

于 2012-04-30T19:25:27.317 回答
1

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

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")

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

于 2012-04-30T19:18:44.620 回答