【问题标题】:How to use Twitter Bootstrap's glyphicons with Rails's button_to如何在 Rails 的 button_to 中使用 Twitter Bootstrap 的字形图标
【发布时间】:2013-09-04 00:13:28
【问题描述】:

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

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

如果我将GO! 替换为&lt;span class="glyphicaon glyphicon-thumbs-up"&gt;&lt;/span&gt;,最终会导致value="&lt;span class="glyphicaon glyphicon-thumbs-up"&gt;&lt;/span&gt;"

任何想法如何将字形图标放入提交表单的按钮中?

更新

我试过了:

<%= 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>

【问题讨论】:

  • 要使用字形图标,您需要使用

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


【解决方案1】:

试试这个:

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

【讨论】:

  • 您的代码按原样抛出错误,我在任何地方都找不到该函数的文档。您能否确认它有效,或指导我查看相关文档。
  • 我让它正常工作,但它仍然导致标记被注入value='' 属性。我在上面添加了结果。
【解决方案2】:

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

<%= 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 %>

基本上(如上面的 cmets 所述),问题在于 glyphicon 使用的语法不能用于 &lt;input /&gt; 这样的自闭合元素,因此您需要一个按钮。不幸的是,Rails 的button_to 也会生成&lt;input /&gt;(在表单内部)。您可以使用 a 手动编写表单,但 Rails 的内置防伪系统会遇到问题(您需要一个真实性令牌)。因此,我将form_tag 和button_tag 与相应的类结合起来,我们就可以开始了。

【讨论】:

    【解决方案3】:

    我认为 .html_safe 可以解决您的问题。我会尝试替换“GO!”与:

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

    或者如果你还想要文本

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

    使用引导程序 3

    根据glyphicons 的Bootstrap 3 文档,可以使用以下HTML 实现左侧带有星形图标和右侧o 文本的大按钮:

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

    注意:不要忘记结束跨度标记和按钮文本之间的空格。

    使用引导程序 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】:

      使用 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 %>
      

      【讨论】:

      • 这对我来说适用于 rails 4。我认为这是这里最好的解决方案。谢谢@Prakash
      【解决方案5】:

      我想要一些更全面的东西......一个带有措辞和字形的按钮。我从上面的答案中混合和匹配,但这有点不同。将这些片段包装在一个 span 标签中就可以了:

      在 HAML 中

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

      经过一些插值后,生成(在 rails 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>
      

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 2013-10-11
        • 2015-06-27
        • 2012-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多