【发布时间】: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