如何使用两个条件操作制作 Haml 表单

How to make a Haml form with two conditional actions

提交此表单时将在控制器上调用 put 操作:

.panel-body{style: 'background:#0E0D0D;'}
    =form_for @payment, method: :put, html: {id: 'edit_bank_detail'} do |f|          .row.text_white
      .form-group.col-lg-12
        =f.label :paypal_email_address
        =f.email_field 'user_paypal_email',class: 'form-control'
    .row.text-center
      .form-group.col-lg-12
        =f.submit 'Submit', class: 'btn btn-primary text_black',data: { disable_with: "Please wait..." }

我需要它根据条件调用 putcreate 操作:

if @payments.new_record? 
  # create action
else
  # put action   

您甚至不需要首先指定 HTTP 方法。 form_for 及其继任者 form_with 足够聪明,可以通过在您作为第一个参数。

= form_for @payment, html: {id: 'edit_bank_detail'} do |f|

给定常规路由,如果记录已保存,这会将表单指向 POST /paymentsPATCH /payments/:id。 Rails 已使用 PATCH 而不是 PUT 进行更新 since 2012resourcesresource 仍会生成额外的 PUT 路由以实现向后兼容性。

我试过类似的方法,它有效。

 =f.submit 'Submit', action_name: @return.new_record? ? 'create' : 'update'

谢谢@Sebastian Palma采纳了您的建议。