2014-10-08 112 views
0

提交表单时,我收到以下错误时:没有路由匹配[PATCH]使用polymorphic_path

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提交的,应该去CREATE方法。

下面是相关航线:

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 

回答

0

该结束了工作被明确定义的HTTP方法解决办法:

<%= form_for @owner, url: polymorphic_path([@owner, @property]), method: :post, html: {class: "form-horizontal"} do |f| %> 

不知道为什么,这是必需的。 Poymorphic路径应该足够聪明,以确定这是我认为的创建行为。