Woa*_*dae 10

从最新版本的Rails(4.0.2,不确定以前的版本)开始,将一个块传递给button_to会调用帮助程序中的分支逻辑,该逻辑创建一个按钮元素而不是输入.

例如,如果你想在haml,bootstrap和fontawesome(我的用例)中创建一个'delete'按钮元素:

= button_to(foo_path(@foo),
  class: 'btn btn-sm', method: :delete, remote: true) do
  <i class="fa fa-times"></i>
Run Code Online (Sandbox Code Playgroud)

如果你想让它们永远都是按钮元素,无论如何,你总是可以将你的按钮内容放在一个块而不是第一个参数中.不确定那里有什么权衡.


Rya*_*igg 5

您可以重写button_to辅助函数来ApplicationHelper渲染button标签。查看button_to已有的代码并修改它以适合您的目的。

  • @SteveSmith 可能缺乏例子。 (7认同)

Abs*_*Abs 5

我刚刚发现将 button_to 更改为使用块会生成按钮标签而不是输入:

所以:

<%= button_to account_path(@account), data: {confirm: 'Are you sure?'}, method: :delete, class: 'btn btn-default btn-danger' do %>
  Inactivate
<% end %>
Run Code Online (Sandbox Code Playgroud)

产生:

<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>
Run Code Online (Sandbox Code Playgroud)