如何在rails提交按钮中放置图标

Posted

技术标签:

【中文标题】如何在rails提交按钮中放置图标【英文标题】:how to put icon in rails submit button 【发布时间】:2012-10-21 11:27:16 【问题描述】:

我正在使用 Bootstrap,并希望在表单的提交按钮中放置一个图标。 这是代码:

<%= f.submit "Submit for Approval <i class='icon-share-alt icon-white'></i>", 
                                class: "button_green" %>

生成的 html

<input type="submit" value="Submit for Approval &lt;i class='icon-share-alt icon-white'&gt;&lt;/i&gt;" name="commit" class="button_green">

我尝试将 raw 和 html_safe 都添加到文本中,但似乎都不起作用。 我知道一种解决方案是让类成为其中已经包含图标的图像,但我想这样做而不创建额外的图像/css。有什么建议吗?

【问题讨论】:

这是一个通过 CSS 解决的客户端问题。请显示您的客户端代码,而不是您的 Rails 代码。 我特别想问是否有办法使用 rails/erb 来做到这一点。我希望生成的 html 在按钮文本中包含图标,而不是使用 css 或其他图像 我不是 Rails 专家,但如果正确包含 Bootstrap,HTML 应该会生成一个图标。看起来像 Rails 问题。 好的...然后显示 HTML! 这是生成的 html &lt;input type="submit" value="Submit for Approval &amp;lt;i class='icon-share-alt icon-white'&amp;gt;&amp;lt;/i&amp;gt;" name="commit" class="button_green"&gt; 【参考方案1】:

您可以改用 button_tag 来做到这一点:

<%= button_tag( :class => "button_green") do %>
  Submit for Approval <i class="icon-share-alt icon-white"></i>
<% end %>

这将创建一个&lt;button type="submit"&gt;&lt;/button&gt; 元素,其中包含图标和文字。我已经测试过了,它可以工作。 button_tag 的默认操作是提交,因此如果您需要不同的操作(例如取消),您可以使用 :type =&gt; "button" 选项来覆盖默认提交行为。

编辑:对于 Bootstrap 3,图标类名称已经改变,所以你可以把

<span class="glyphicon-white glyphicon-share-alt white"></span>

注意,白色图标不再有特殊类。只需创建一个 css 类 .white 并输入 color: #fff;。简单的。您可以使用您喜欢的任何颜色或文本样式,因为图标现在是一种字体。

相关问题:Add Icon to Submit Button in Twitter Bootstrap 2和How do I change Bootstrap 3's glyphicons to white?

【讨论】:

我不喜欢这个解决方案,因为它没有使用 f 变量......虽然结果可能是一样的。【参考方案2】:
.button_green 
   background-image:url(...your image path...);
   background-repeat:no-repeat;
   padding-left:30px;

您可能需要调整填充以匹配图标的大小。

【讨论】:

以上是关于如何在rails提交按钮中放置图标的主要内容,如果未能解决你的问题,请参考以下文章

Rails:一个表单中的多个提交按钮

Rails - 当用户单击提交按钮时如何更新表中的数据

如何使字形图标用作提交按钮?

form表单里的按钮触发form表单的提交

如何在视图中点击提交按钮而不必先关闭键盘?

当按钮被禁用时,在提交按钮前添加加载图标