29

我有一个使用 ajax 的喜欢/不喜欢按钮的表单:

= form_for like, :html => { :method => :delete}, :remote => true do |f|
= f.submit pluralize(@video.likes.count, 'like'), :class => "btn btn-warning btn-mini", "data-disable-with"=> "Just a moment..."

表格完美运行。

我想在提交按钮的文本前添加一个图标。添加图标的haml代码如下(twitter bootstrap):

%i.icon-heart.icon-white

有没有办法将此html添加到按钮?我尝试将其添加为纯 html,但 rails 将其呈现为文本。

更新

我设法将提交按钮封装在一个包含图标和适当样式的跨度类中。我现在需要删除按钮上的所有样式...

%span.btn.btn-danger.btn-mini
  %i.icon-heart.icon-white
  = f.submit pluralize(@video.likes.count, 'like')
4

7 回答 7

99

感谢 ismaelga,我发现了这个 SO question

这是解决方案:

<%= button_tag(type: 'submit', class: "btn btn-primary") do %>
 <i class="icon-ok icon-white"></i> Save
<% end %>
于 2012-07-24T22:35:58.887 回答
5

问题本身的公认答案将起作用,但更像是一个补丁,而不是保持代码风格清晰一致的完美解决方案。它回溯到使用标准和手动查看方法: #button_tag. 我倾向于避免使用 #submit_tag、#form_tag、#input_tag ... 等手动方法,因为它们与支持的模型或表单模型本身无关,您需要手动对它们执行所有操作。尽管提交与f.a 中的每个输入都没有联系,form_for例如f.input ...,它与样式、代码可读性和良好的编程实践有关。此代码运行良好(form_for 和 simple_form):

= f.button :button, type: :submit, class: 'class1 class2 ... classN' do
    = 'button call to action text'
    %i.fa.fa-download.ml5 // => haml icon as requested

希望它可以帮助其他人像我一样尝试避免_tag使用方法。

于 2018-08-12T22:29:04.647 回答
3

另一种选择可以button代替submit

请参阅 Rails 文档FormBuilder#button

= f.button :class => "btn btn-warning btn-mini" do
  %i.icon-heart.icon-white
    = pluralize(@video.likes.count, 'like')
于 2015-04-13T22:28:52.750 回答
2

试试这个。我没有测试过,但我认为可以做这样的事情。

= f.submit :class => "btn btn-warning btn-mini", "data-disable-with"=> "Just a moment..." do
  %i.icon-heart.icon-white
  = pluralize(@video.likes.count, 'like')
end

因此,如果您使用 simple_form,这是可能的。对不起。

所以另一个尝试是

= f.submit "#{pluralize(@video.likes.count, 'like')} <i class='icon-heart icon-white'/>".html_safe, :class => "btn btn-warning btn-mini", "data-disable-with"=> "Just a moment..."
于 2012-07-22T22:20:33.020 回答
2

贾斯汀 D 的回答也帮助了我。如果您从 Google 来到这里,并且正在寻找 Slim 实现,您可以这样做:

= button_tag(type: 'submit', class: 'btn btn-default') do
    span.glyphicon.glyphicon-floppy-disk>
    | Save
end

Slim 用户会认识到>'s 的必要性。

截至 2014 年 9 月 24 日,这对我使用 Rails 4.1.5、Ruby 2.1.2 和 bootstrap-sass 3.2 有效。

于 2014-09-24T18:18:43.140 回答
0

解决方案

= button_to('Add', line_item_path, method: :post , class: "btn btn-warning btn-lg" , params: { param1: 'value1',  param2: 'value2' })

http://qiita.com/tomomomo1217/items/a5f790c31670587e2d87

如何在链接中放置图像?

于 2015-08-16T00:36:43.667 回答
-3

请尝试以下代码。有用

<%= f.submit :class => "btn btn-success btn-mini" %>
于 2016-06-17T14:08:58.613 回答