simple_form提交的默认disable_with

我想在simple_form中更改提交按钮的默认行为,这样我就不需要为所有表单明确指定:disable_with => true。 如何在simple_form.rb中进行此特定更改?

这在较新版本的Rails中略有不同,因为不建议使用属性disable_with。 我写了一篇文章: http : //www.railsonmaui.com/blog/2014/02/23/simple-form-and-disable-processing-by-default/

这是新代码:

SimpleForm::FormBuilder.class_eval do def submit_with_override(field, options = {}) data_disable_with = { disable_with: 'Processing...' } options[:data] = data_disable_with.merge(options[:data] || {}) submit_without_override(field, options) end alias_method_chain :submit, :override end 

感谢@Appster的想法!

将此覆盖添加到我的simple_form.rb就像一个魅力!

 SimpleForm::FormBuilder.class_eval do def submit_with_override(field, options = {}) submit_without_override(field, {:disable_with => 'saving...'}.merge(options)) end alias_method_chain :submit, :override end 

根据ActionView :: Helpers :: FormBuilder.submit , f.button访问1~2个参数,因此应该使用以下两个代码。

  • f.submit "MyText", class: "my-btn"
  • f.submit class: "my-btn"

在我的情况下,添加此代码初始化文件工作正常。

 SimpleForm::FormBuilder.class_eval do def submit_with_override(value=nil, options={}) value, options = nil, value if value.is_a?(Hash) data_disable_with = { disable_with: 'Processing...' } options[:data] = data_disable_with.merge(options[:data] || {}) submit_without_override(value, options) end alias_method_chain :submit, :override end 

希望能帮助到你。

它没有覆盖与Rails 5兼容的提交按钮上的任何现有数据属性。

 module DisableDoubleClickOnSimpleForms def submit(field, options = {}) if field.is_a?(Hash) field[:data] ||= {} field[:data][:disable_with] ||= field[:value] || 'Processing...' else options[:data] ||= {} options[:data][:disable_with] ||= options[:value] || 'Processing...' end super(field, options) end end SimpleForm::FormBuilder.prepend(DisableDoubleClickOnSimpleForms)