如何使用Rails的button_to使用Twitter Bootstrap的glyphicons

时间:2013-08-31 10:05:37

标签: html css ruby-on-rails twitter-bootstrap glyphicons

我有几个提交AJAX请求的按钮。

<%= button_to 'GO!', {controller:'videos', action:'rate', id: video.hashed_id, format: 'json'}, {:remote=>true, :class=>"btn btn-default btn-sm"} %>

如果我将GO!替换为<span class="glyphicaon glyphicon-thumbs-up"></span>,则会导致此value="<span class="glyphicaon glyphicon-thumbs-up"></span>"

任何想法如何将glyphicon放入提交表单的按钮?

更新

我试过了:

<%= button_to content_tag(:i, '', class: 'icon-thumbs-up'), {controller:'videos', action:'rate', id: video.hashed_id, format: 'json'}, {:remote=>true, :class=>"btn btn-default btn-sm"} %>

创造了这个:

<form action="/videos/rate/asdfsxsdf/no.json" class="button_to" data-remote="true" method="post">
<div><input class="btn btn-default btn-sm" type="submit" value="<i class="icon-thumbs-up"></i>" />
<input name="authenticity_token" type="hidden" value="es4wPqFr9xPBUFsbHQR/gAzofDC+ZwYsiiJ7RAQZUHk=" />
</div></form>

5 个答案:

答案 0 :(得分:4)

使用Rails 3/4和bootstrap,它可以工作:

              <%= button_to "/hubspot/new_campaign?id=tab1-2", :class=>"btn btn-default btn-icon glyphicons
              message_plus", :remote => true do %>
                  <i></i>Create New Campaign
              <% end %>

答案 1 :(得分:1)

这不是超级性感,但它有效!!

<%= form_tag({controller:'videos', action:'rate', id: video.hashed_id, yesno:'no', format: 'json'}, {remote:true} ) do %>
<%= button_tag '', :class=>"rate-btn yes-btn btn btn-default btn-lg glyphicon glyphicon-thumbs-down" %>
<% end %>

基本上(如上面的评论中所述),问题是glyphicon使用的语法不能用于{_ 1}这样的自闭元素,因此您需要一个按钮。不幸的是,Rails的<input />也会生成一个button_to(在表单内)。您可以手动编写表单,但是您会遇到Rails的内置伪造防止系统(您需要一个真实性令牌)的问题。相反,我将<input />form_tag与相应的类合并,我们很高兴。

答案 2 :(得分:0)

试试这个:

<%= button_to content_tag(:i, '', class: 'icon-thumbs-up'), {controller:'videos', action:'rate', id: video.hashed_id, format: 'json'}, {:remote=>true, :class=>"btn btn-default btn-sm"} %>

答案 3 :(得分:0)

我认为 .html_safe 可以解决您的问题。我会尝试取代'GO!'用:

'<span class="glyphicon glyphicon-thumbs-up"></span>'.html_safe

或者如果您仍想要文字

'<span class="glyphicon glyphicon-thumbs-up"></span> GO!'.html_safe

使用Bootstrap 3

根据glyphicons的Bootstrap 3文档,左侧是一个带有Star glyphicon的大按钮,右侧的文本Star可以使用以下HTML实现:

<button type="button" class="btn btn-default btn-lg">
  <span class="glyphicon glyphicon-star"></span> Star
</button>

使用Rails中的button_tag,您可以创建相同的按钮:

<%= button_tag '<span class="glyphicon glyphicon-star"></span> Star'.html_safe , :class=>"btn btn-default btn-lg" %>

同样,如果你想在文字后面加上图标,那就是这样的:

<%= button_tag 'Star <span class="glyphicon glyphicon-star"></span>'.html_safe , :class=>"btn btn-default btn-lg" %>

NB:不要忘记结束范围标记和按钮文本之间的空格。

使用Bootstrap 2

根据glyphicons的Bootstrap 2文档,可以使用以下HTML实现右侧文本Star的大型Star按钮:

<a class="btn btn-large" href="#"><i class="icon-star"></i> Star</a>

使用Rails中的button_tag,您可以使用以下方式创建相同的按钮:

<%= button_tag '<i class="icon-star"></i> Star'.html_safe , :class=>"btn btn-large" %>

答案 4 :(得分:0)

我想要一些更全面的东西......一个带有措辞和字形的按钮。我从上面的答案中混合搭配,但这有点不同。将部分包裹在span标签中可以解决问题:

在HAML中

 = button_to(rails_path(:id => id), :remote => true, class: 'btn btn-
     success) do
   %span
     %span.glyphicon.glyphicon-star
     Star!

经过一些插值后,生成(在轨道5中)

<form class="button_to" method="post" action="/rails/path?id=1734369" data-remote="true">
    <button class="btn btn-success" type="submit">
      <span>
        <span class="glyphicon glyphicon-star"></span>
              Star!                
      </span>
    </button>
    <input type="hidden" name="authenticity_token" value="blah" />
</form>