我有一个路由文件(Rails 4.0.4 App):
resources :products do
resources :variants, except: :index
end
佣金路线给出:
product_variants POST /products/:product_id/variants(.:format) variants#create
new_product_variant GET /products/:product_id/variants/new(.:format) variants#new
edit_product_variant GET /products/:product_id/variants/:id/edit(.:format) variants#edit
product_variant GET /products/:product_id/variants/:id(.:format) variants#show
PATCH /products/:product_id/variants/:id(.:format) variants#update
PUT /products/:product_id/variants/:id(.:format) variants#update
DELETE /products/:product_id/variants/:id(.:format) variants#destroy
所以建议我使用
<%= form_for [@product, @variant] do |f| %>
但这会生成(注意URL):
<form accept-charset="UTF-8" action="/variants/1" class="edit_variant" id="edit_variant_1" method="post">
我得到(当然)路由错误,说没有路由与PATCH / variants / 1匹配
当我重定向到位于 api / 下的命名空间的Api控制器时,同样奇怪的行为:
redirect_to [:api, @product, @variant]
得到我:没有路线与/ api / variants / 1
匹配所以:
生成网址
时会忽略@products有没有人知道在哪里继续看?
答案 0 :(得分:1)
看看你的变种控制器。你在实例化@product吗?
发布控制器的代码可能会有所帮助。
希望这有帮助!
亚历
答案 1 :(得分:0)
好的问题实际上在于不同的控制器。我以某种方式在之前的行动中实例化了@products,但显然做错了。
似乎是一种能量饮料问题。谢谢你指出我正确的解决方案!