Rails简单表单按钮ID

时间:2017-01-16 14:02:05

标签: ruby-on-rails forms simple-form

我无法在按钮上以简单的形式使用ID,我已尝试

this

= f.button, :input_html => { :id => 'my_id' }
= f.button, :input_html => { :id => 'my_id' }, :submit

and this

= f.button, html: { id: :edit_account } 
= f.button, html: { id: :edit_account } :submit

正确的做法是什么?

2 个答案:

答案 0 :(得分:3)

= f.button :submit, id: "whatever"

如果查看documentation,它会接受一个可选字符串和一个options hash(用于class或id)。在内部,它只是调用submit_tag帮助程序,这就是为什么它与input帮助程序在input_html散列中传递任何HTML属性的原因不同。

答案 1 :(得分:1)

尝试 = f.button :submit, input_html: { id: 'edit_account' }

来自docs:

  

如果要将相同的选项传递给表单中的所有输入(例如,默认类),可以使用simple_form_for中的:defaults选项。输入调用中的特定选项将覆盖默认值:

<%= simple_form_for @user, defaults: { input_html: { class: 'default_class' } } do |f| %>
  <%= f.input :username, input_html: { class: 'special' } %>
  <%= f.input :password, input_html: { maxlength: 20 } %>
  <%= f.input :remember_me, input_html: { value: '1' } %>
  <%= f.button :submit %>
<% end %>
  

由于Simple Form在您的标签周围生成一个包装div并默认输入,您可以使用:wrapper_html选项将任何html属性传递给该包装器,如下所示:

<%= simple_form_for @user do |f| %>
  <%= f.input :username, wrapper_html: { class: 'username' } %>
  <%= f.input :password, wrapper_html: { id: 'password' } %>
  <%= f.input :remember_me, wrapper_html: { class: 'options' } %>
  <%= f.button :submit %>
<% end %>