而不是
<input type="submit" />
我想输出
<button>
使用button_to方法(rails 3.0.0)
这可能吗?
答案 0 :(得分:10)
从最新版本的Rails(4.0.2,不确定以前的版本)开始,将块传递给button_to会调用帮助程序中的分支逻辑,创建一个按钮元素而不是输入。
例如,如果你想在haml,bootstrap&amp;中创建一个'delete'按钮元素。 fontawesome(我的用例):
= button_to(foo_path(@foo),
class: 'btn btn-sm', method: :delete, remote: true) do
<i class="fa fa-times"></i>
如果你想让它们永远都是按钮元素,那么你总是可以将你的按钮内容放在一个块中而不是第一个参数中。不确定那里有什么权衡。
答案 1 :(得分:4)
您可以覆盖button_to
中的ApplicationHelper
帮助程序来代替呈现button
标记。查看button_to
已有的代码并根据您的目的对其进行修改。
答案 2 :(得分:4)
我刚刚发现将button_to更改为使用块生成按钮标记而不是输入:
这样:
<%= button_to account_path(@account), data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-default btn-danger' do %>
Inactivate
<% end %>
生成:
<form method="post" class="button_to" action="/accounts/30">
<div>
<input type="hidden" value="delete" name="_method">
<button type="submit" data-confirm="Are you sure?" class="btn btn-default btn-danger">
Inactivate
</button>
<input type="hidden" value="" name="authenticity_token">
</div>
</form>
答案 3 :(得分:3)
从我可以看到Rails已经有一个帮助输出标签;它被称为button_tag
(而不是button_to
)。
所以,您可以在视图中使用以下内容,我认为无需覆盖button_to:
<%= button_tag "Button Text", :class => "btn", :type => "submit" %>
无需覆盖。另外,建议始终提供:type参数,因为它在不同的浏览器中呈现不同。
答案 4 :(得分:0)
我通常只是将其粘贴在我的application_helper.rb文件中:
def button_tag(text, options={})
content_tag(:button, {:type => "submit"}.merge(options)) { text }
end
然后您可以从类似的视图中调用它:
button_tag "Save", :class => 'accept'