将一个Twitter Bootstrap按钮图标添加到Rails中的button_to

mad*_*dog 22 ruby-on-rails twitter-bootstrap

我正在使用Rails书进行敏捷Web开发,但我一直在使用Twitter Bootstrap而不是书中的自定义样式.我无法通过GLyphonics向button_to方法添加图标.我的代码看起来像这样:

<%= button_to <i class="icon-search icon-white">Add To Cart</i>, 
              line_items_path(product_id: product), 
              class: "btn btn-success" %>
Run Code Online (Sandbox Code Playgroud)

我尝试了很多变化,但似乎无法让它正常工作.

jor*_*npg 57

我不确定OP是如何工作的,但是Rails会button_to生成一个<input type='submit' />元素,它不允许在值字段中使用HTML.

另请参阅:input type ="submit"Vs按钮标签是否可以互换?

在这种情况下最好的选择是强制link_toPUT(或POST):

<%= link_to raw("<i class=\"icon-search icon-white\">Add To Cart</i>"), 
          line_items_path(product_id: product), 
          class: "btn btn-success",
          method: :put %>
Run Code Online (Sandbox Code Playgroud)

  • 这^^^是正确的答案.不接受一个OP. (3认同)
  • 除非我们在谈论删除链接/按钮.我们需要一个按钮来提交HTML方法才能工作.http://stackoverflow.com/questions/4606860/rails-3-link-to-to-destroy-not-working (3认同)

Dan*_*anT 22

您可以将图标添加为子元素:

<%= button_to button_path, method: :delete do %>
    <span class="glyphicon glyphicon-search"></span>
<% end %>
Run Code Online (Sandbox Code Playgroud)

  • 将块传递给`button_to`仅适用于rails> = 4.x. (3认同)

Pie*_*rre 7

看起来你的报价有问题:

<%= button_to raw("<i class=\"icon-search icon-white\">Add To Cart</i>"), 
          line_items_path(product_id: product), 
          class: "btn btn-success" %>
Run Code Online (Sandbox Code Playgroud)

用双引号括住按钮的标签,转义标签中的双引号,i最后将所有内容包装到一个raw()调用中,以确保正确显示HTML.

或者你可以使用html_safe:

<%= button_to "<i class=\"icon-search icon-white\">Add To Cart</i>".html_safe, 
          line_items_path(product_id: product), 
          class: "btn btn-success" %>
Run Code Online (Sandbox Code Playgroud)

来自@jordanpg的好点:您不能在按钮的值中包含HTML,因此他的解决方案更合适并且应该获得批准状态.该html_safe部分仍然有效.

  • 这个答案是错误的,不起作用.@jordanpg下面的答案是正确的. (4认同)

小智 6

使用raw()或#html_safe仍然不适合我.

我正在使用辅助方法来创建button_to标记内容.在我的帮助方法中使用以下内容结束(路径是事先定义的):

form_tag path, :method => :post do
  button_tag do
    content_tag :i, 'Flag as inappropriate', :class => 'icon-flag flag_content'
  end
end
Run Code Online (Sandbox Code Playgroud)


Pas*_*ain 5

我用过这个,它对我来说很好用:

<%= link_to(line_items_path(product_id: product),
    method: :put,
    class: 'btn btn-success') do %>
    <%= content_tag('i', nil, class: 'icon-search icon-white') %> Add To Cart
<% end %>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助