没有路由匹配编辑表单的[POST] - Ruby on rails

时间:2018-06-09 09:26:41

标签: ruby-on-rails routes

我正在使用rails 5

我有一个名为价格的型号。 (has_many 产品

价格的型号名为产品(belongs_to 价格

在这种情况下,我可以创建新的产品,也可以销毁产品。 但我无法编辑产品

  

我的路线

  resources :prices do
    resources :products
  end
  

在我的价格表中

<%= link_to "Edit", edit_price_product_path(product.price, product) %>
  

在我的产品编辑中

<%= form_for @product, :url => {:action => :edit}, :method => :post do |f| %>
    <%= f.text_field :name, placeholder: 'Name' %>
    <%= f.submit %>
<% end %>
  

在我的产品控制器中

def edit
end

def update
    product.update(product_params)
    if @product.update(product_params)
        redirect_to price_path(@price)
    else
        render 'edit'
    end
end

我的佣金路线

price_products GET    /prices/:price_id/products(.:format)          products#index
                         POST   /prices/:price_id/products(.:format)          products#create
     new_price_product GET    /prices/:price_id/products/new(.:format)      products#new
    edit_price_product GET    /prices/:price_id/products/:id/edit(.:format) products#edit
         price_product GET    /prices/:price_id/products/:id(.:format)      products#show
                         PATCH  /prices/:price_id/products/:id(.:format)      products#update
                         PUT    /prices/:price_id/products/:id(.:format)      products#update
                         DELETE /prices/:price_id/products/:id(.:format)      products#destroy
  

问题是

     

当我点击提交按钮时,我收到此错误

No route matches [POST] "/price/price_id/product/product_id/edit"

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用namespaced syntax来处理嵌套资源:

<%= form_for [:price, @product] do |f| %>
  <%= f.text_field :name, placeholder: 'Name' %>
  <%= f.submit %>
<% end %>