如何禁用表单提交按钮"alàRubyon Rails Way"?

use*_*052 23 ruby forms ajax ruby-on-rails ruby-on-rails-3

我on Rails的3使用Ruby,我想禁用的toogle CSS类form.submit 当表单是AJAX提交,直到AJAX HTTP请求完成后(我用的是默认为JavaScript jQuery框架).

我的表格如下:

<%= form_for(@article, :remote => true) do |form| %>
    ...
    <%= form.submit(nil, {:id => 'button_id', :class => 'button_class'}) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我怎样才能以"共同"/"好"/"正确"的方式做到这一点?

And*_*nce 43

Rails jQuery bridge(jquery_ujs.js)代码实际上有一个帮助器.

<%= form.submit "Save", id: "button_id", class: "button", disable_with: "Submitting..."
Run Code Online (Sandbox Code Playgroud)

它将使用您给出的值替换按钮文本.

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-submit_tag

API更改:正如Renan在下面的评论中建议的那样,从Rails 4 beta开始,该disable_with选项会有一个弃用通知.它应该被更改为数据属性:

<%= form.submit "Save", id: "button_id", class: "button", data: {disable_with: "Submitting..."} %>
Run Code Online (Sandbox Code Playgroud)

这应该适用于所有最新版本的Rails,因为它是选项所做的.所以当你升级到Rails 4时,它会减少一个弃用通知.:)

  • 从rails 3.2.5开始,不推荐使用`disable_with`选项.现在使用`:data => {:disable_with =>'正在提交...'}`.资料来源:http://apidock.com/rails/ActionView/Helpers/FormTagHelper/submit_tag#1305--disable-with-is-deprecated (6认同)
  • 在最新的3.2.13版本的Rails中没有弃用通知,但它在4.0.0-beta1中,所以我更新了我的答案以反映这一点.谢谢. (3认同)