我有一个管理命名空间和一个放在admin命名空间之外的公司支架。
我想把这些公司放到admin命名空间中
然后我将companies_controller放入admin目录并将定义更改为
class Admin::CompaniesController < Admin::AdminController
并将公司视图放入/ app / views /中的admin目录
并将companies_helper放入管理目录,现在看起来如下:
module Admin::CompaniesHelper end
routes.rb中的命名空间:
namespace :admin do root :to => "companies#index" resources :companies end
当我去localhost:3000 / admin时出现此错误:
undefined method `company_path' for #:0xb696b408>
现在请告诉我如何编辑链接以使链接正常工作?
答案 0 :(得分:4)
当您将控制器移动到admin命名空间时,您将路由更改为在scaffolded模板中创建的链接。例如,如果您的模板使用company_path,则链接将更改为admin_company_path。
要在任何给定时间点查看应用程序中的路由,请从rails应用程序根目录中的命令行运行“rake routes”。这将显示您应用程序中的所有路径
答案 1 :(得分:2)
由于公司位于命名空间管理员之下,因此您必须在路径前加上admin。
像这样:
admin_company_path(@company)
有关Rails路由和命名空间的更多信息,请参阅此Rails guide。
答案 2 :(得分:0)
我得到了那种丑陋的解决方案,但它确实有效。我生成了一个新的脚手架但不同:
rails generate scaffold Admin::Companies
代替
rails generate scaffold Companies
但我仍然不明白帮助者如何为资源制作网址:(