编辑表单提交POST请求而不是PUT请求,即使_method隐藏字段在如下所示的表单中也可用
<form id="edw_special_debts_child_form" class="will-form" action="/equitable_distribution_will/update-special-debts-child" accept-charset="UTF-8" method="post">
<input name="utf8" type="hidden" value="✓">
<input type="hidden" name="_method" value="put">
<input type="hidden" name="authenticity_token" value="xxxxxxxx">
控制台中没有出现JS错误。
Rails错误:
No route matches [POST] "/update-special-debts-child"
使用此代码生成的表单
<%= form_tag(will_form_url, :id => "edw_special_debts_child_form", method: @form_method, class: "will-form") do %>
<% if have_sons?(@calculator) || have_daughters?(@calculator) %>
<%= render partial: "shared/will_question_repeater_block", locals: {q: @children_compensate_question} %>
<% end %>
<div class="btn-nav space-bet">
<% if (have_wife?(@calculator) || session[:will_spouse_non_muslim] == 'true') && current_user.gender == 'male' %>
<%= link_to "Previous", equitable_distribution_will_special_debts_wife_path, class: "text-center btn-gold gotham" %>
<% else %>
<%= link_to "Previous", equitable_distribution_will_special_debts_lp_path, class: "text-center btn-gold gotham" %>
<% end %>
<button type="submit" class="text-center btn-gold gotham">Save & Continue</button>
</div>
<% end %>
这是助手
def will_form_url
form_url = "#{action_name}"
@form_method = ""
if $tables[action_name.to_sym].where(will_id: session[:will_id]).present?
form_url = form_url.insert(0, 'equitable_distribution_will_update_')
@form_method = "put"
else
form_url = form_url.insert(0, 'equitable_distribution_will_create_')
@form_method = "post"
end
form_url = form_url.insert(-1, '_path')
send(form_url)
end
我表单中最棘手的部分是,我通过JS复制字段,并在每个表单元素的末尾附加“ []”以获取值数组。
如果我仅添加一行,则编辑表单会正常工作,但是当我添加多行时,它将通过POST而不是PUT提交
可能是什么问题?