资源没有为create创建帮助方法

时间:2014-03-25 04:03:47

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

我有一个名为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

view.html.erb

form_for [:admin,@newpackage] do |f|
end

报告无法找到admin_packages_path。有人可以解释我们应该如何在路由中声明这个以生成适当的辅助方法来创建?

2 个答案:

答案 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