ruby-on-rails – Rails 3 – 嵌套资源 – 路由
发布时间:2020-12-17 01:44:40 所属栏目:百科 来源:网络整理
导读:我在嵌套源Product上遇到了与destroy方法有关的问题,它与Orders绑定. 在尝试销毁某个项目后,我将用户重定向到我的order_products_url.我收到以下路由错误: No route matches "/orders/1/products" 我的destroy方法看起来像这样: def destroy @product = Pr
我在嵌套源Product上遇到了与destroy方法有关的问题,它与Orders绑定.
在尝试销毁某个项目后,我将用户重定向到我的order_products_url.我收到以下路由错误: No route matches "/orders/1/products" 我的destroy方法看起来像这样: def destroy @product = Product.find(params[:id]) @order = Order.find(params[:order_id]) @product.destroy respond_to do |format| format.html { redirect_to(order_products_url) } format.xml { head :ok } end end 并在routes.rb中: resources :orders do resources :products,:controller => "products" end 这让我感到困惑的原因是我的产品更新方法,我正确地将用户重定向到order_products_url而没有问题.我不明白为什么它在那里工作但不在这里. 谢谢 解决方法
order_products_url期望传递参数 – 订单ID或订单对象本身.没有它,它将无法正常工作.所以使用上面的代码:
def destroy @product = Product.find(params[:id]) @order = Order.find(params[:order_id]) @product.destroy respond_to do |format| format.html { redirect_to(order_products_url(@order) } format.xml { head :ok } end end 作为旁注,您可以稍微缩短路线: resources :orders do resources :products end 当命名为Rails期望时,指定控制器是多余的.我希望这有帮助! 更新:我在Rails 3中添加了一篇关于路由的文章链接,其中包含可下载的代码示例.我在“您应该知道的事情”部分中更新了一个解释命名路线的段落: Routing in Ruby on Rails 3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |