提交表单时出现以下错误:
No route matches [PATCH] "/foreclosure_defenses/4/properties"即使浏览器中的html看起来像这样:
<form accept-charset="UTF-8" action="/foreclosure_defenses/4/properties" class="form-horizontal" id="edit_foreclosure_defense_4" method="post">由于新表单呈现了一个多态模型和一个属性模型,因此我将创建我的表单:
<%= form_for @owner, url: polymorphic_path([@owner, @property]) do |f| %>
<%= f.fields_for :properties, @property do |property_builder| %>
<%= render 'form', f: property_builder %>
<% end %>
<% end %>为什么我会收到这个补丁错误?表单是通过POST提交的,应该是创建方法。
以下是相关的路由:
foreclosure_defense_properties_path GET /foreclosure_defenses/:foreclosure_defense_id/properties(.:format) properties#index
POST /foreclosure_defenses/:foreclosure_defense_id/properties(.:format) properties#create
new_foreclosure_defense_property_path GET /foreclosure_defenses/:foreclosure_defense_id/properties/new(.:format) properties#new
edit_foreclosure_defense_property_path GET /foreclosure_defenses/:foreclosure_defense_id/properties/:id/edit(.:format) properties#edit
foreclosure_defense_property_path GET /foreclosure_defenses/:foreclosure_defense_id/properties/:id(.:format) properties#show
PATCH /foreclosure_defenses/:foreclosure_defense_id/properties/:id(.:format) properties#update
PUT /foreclosure_defenses/:foreclosure_defense_id/properties/:id(.:format) properties#update
DELETE /foreclosure_defenses/:foreclosure_defense_id/properties/:id(.:format) properties#destroy发布于 2014-10-09 06:48:50
最终起作用的解决方案是显式定义http方法:
<%= form_for @owner, url: polymorphic_path([@owner, @property]), method: :post, html: {class: "form-horizontal"} do |f| %>不确定为什么需要这样做。在我看来,Poymorphic应该足够聪明,可以确定它是一个创建操作。
https://stackoverflow.com/questions/26267394
复制相似问题