使用嵌套GET的资源 - 路由中断资源路由?

时间:2013-01-16 09:45:30

标签: ruby-on-rails routes ruby-on-rails-3.2

运行Rails 3.2.11,我有一个常规控制器“LbuController”,它基本上是一个增强的脚手架,由用于AJAX请求的4个额外的GET方法增强。

resources :lbus do
  get 'add_offering'
  get 'remove_offering'
  get 'add_offering_element'
  get 'remove_offering_element'
end

运行rake routes会给我以下路线

           lbu_add_offering GET    /lbus/:lbu_id/add_offering(.:format)                                 lbus#add_offering
        lbu_remove_offering GET    /lbus/:lbu_id/remove_offering(.:format)                              lbus#remove_offering
   lbu_add_offering_element GET    /lbus/:lbu_id/add_offering_element(.:format)                         lbus#add_offering_element
lbu_remove_offering_element GET    /lbus/:lbu_id/remove_offering_element(.:format)                      lbus#remove_offering_element
                       lbus GET    /lbus(.:format)                                                      lbus#index
                            POST   /lbus(.:format)                                                      lbus#create
                    new_lbu GET    /lbus/new(.:format)                                                  lbus#new
                   edit_lbu GET    /lbus/:id/edit(.:format)                                             lbus#edit
                        lbu GET    /lbus/:id(.:format)                                                  lbus#show
                            PUT    /lbus/:id(.:format)                                                  lbus#update
                            DELETE /lbus/:id(.:format)                                                  lbus#destroy

这似乎正是我的意图。

但是,在使用http://localhost:3000/lbus/new创建的link_to "new", new_lbu_path链接后,会出现以下错误:

No route matches {:action=>"add_offering", :lbu_id=>nil, :offering_id=>1, :controller=>"lbus"}

这对我来说毫无意义。 任何人都知道这里发生了什么,出了什么问题?

提前致谢!

1 个答案:

答案 0 :(得分:0)

在“新”视图中,您必须使用lbu_add_offering路径。

这条路似乎不正确。错误是指:action => “add_offering”。