You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何制作支持条件触发PUT/CREATE动作的HAML表单

解决Rails表单动态切换CREATE/PUT动作的问题

嘿,其实你不用手动写判断逻辑啦!Rails的form_for助手本身就自带这个功能,完全能满足你的需求~

修改后的代码

只需要去掉你手动指定的method: :put,form_for会自动根据对象状态切换请求方式:

.panel-body{style: 'background:#0E0D0D;'}
  =form_for @payment, 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..." }

为什么这样可行?

  • 当@payment.new_record?为true(新创建的空记录)时,form_for会自动生成POST请求,对应控制器的create动作;
  • 当@payment是已存在的数据库记录时,会生成PUT请求,对应控制器的update动作。

这完全符合Rails「约定优于配置」的设计原则,代码更简洁也更易维护~

如果因为特殊场景必须手动控制请求方法,也可以用条件判断显式设置:

=form_for @payment, method: @payment.new_record? ? :post : :put, html: {id: 'edit_bank_detail'} do |f|

但显然第一种默认方式更优雅,优先推荐使用哦!

内容的提问来源于stack exchange,提问作者Amol Mohite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:47:06