slim中渲染表单意外提交数据

Rendering form in slim unexpectedly submits data

我正在尝试在 users/new.html.slim 中呈现多个表单。我在使用 form1 中的 "next" 按钮时遇到问题,当我单击它时,它会自动将表单提交给 db。但是,它应该只呈现下一个表单。

= simple_form_for @user, html: { class: "profile_form"} do |f|
  = f.fields_for :profile, @user.profile || Profile.new do |p|
    = render 'users/form1', f: f, p: p
  = f.submit

这是 form1

.form-1
  .form-1-detail
    = f.input :name
    = f.input :email
    = f.input :password, required: true
    = f.input :password_confirmation, required: true
button.next next

有谁知道为什么会这样?我怀疑缩进导致它表现得很奇怪。

您的问题与按钮的默认类型有关,即 "submit",因此表单中的任何按钮都会触发表单提交,除非您专门更改按钮类型。

您可以通过显式添加 type="button":

.form-1
  .form-1-detail
    = f.input :name
    = f.input :email
    = f.input :password, required: true
    = f.input :password_confirmation, required: true
button.next type="button" next