如何制作支持条件触发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
相关产品推荐
相关产品推荐

