【问题标题】:Resources-Route with nested GET breaks Resource-Routes?带有嵌套 GET 的资源路由中断资源路由?
【发布时间】:2013-01-16 09:45:29
【问题描述】:

运行 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

这似乎正是我想要的。

但是点击使用link_to "new", new_lbu_path 创建的http://localhost:3000/lbus/new 的链接会给我以下错误:

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

这对我来说完全没有意义。 有人知道这里发生了什么以及出了什么问题吗?

提前致谢!

【问题讨论】:

  • 我认为该错误与新操作无关。但它指的是 add_offering -> new 的控制器操作或单击“new”后重定向到的视图是否有错误?
  • @Oliver 在“新”视图中,您一定使用了 lbu_add_offering 路径。这条路似乎是不正确的。错误指的是 :action=> "add_offering"
  • 不,一定是路由相关的问题。一旦我使用 get 方法删除块,new 操作就会按预期工作。
  • @Nishant - 你是对的。就是这样!谢谢
  • @Oliver 乐于助人。我已将其转换为答案 - 您可以接受。

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


【解决方案1】:

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

那条路径似乎不正确。错误指的是 :action=> "add_offering"。

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多