我有一个名为package的模型,它有一个在名称空间admin下创建的控制器包。
所以我的路线中的资源声明如下
namespace :admin do
resources :package
end
当我运行rake routes
admin_package_index GET /admin/package(.:format) admin/package#index
POST /admin/package(.:format) admin/package#create
new_admin_package GET /admin/package/new(.:format) admin/package#new
edit_admin_package GET /admin/package/:id/edit(.:format) admin/package#edit
admin_package GET /admin/package/:id(.:format) admin/package#show
PUT /admin/package/:id(.:format) admin/package#update
DELETE /admin/package/:id(.:format) admin/package#destroy
如果你看到没有为create生成辅助方法,那应该是admin_packages_path
@newpackage = Package.new
form_for [:admin,@newpackage] do |f|
end
报告无法找到admin_packages_path。有人可以解释我们应该如何在路由中声明这个以生成适当的辅助方法来创建?
答案 0 :(得分:2)
您的路线名称不正确,您将复数(resources
)与单数(:package
)配对。
如果您将使用多个包,则应声明resources :packages
- 这将为所有七个RESTful操作(索引,显示,新建,创建,编辑,更新,销毁)生成正确命名的路由。< / p>
如果您只使用单个包,则需要手动指定URL作为表单的选项,例如。
form_for [:admin, @newpackage], url: admin_package_path do |f|
答案 1 :(得分:0)
您确实需要将路线更改为以下内容:
namespace :admin do
resources :packages
end