Ruby on rails 3 Rails 3命名空间路由
Ruby on rails 3 Rails 3命名空间路由,ruby-on-rails-3,routing,namespaces,Ruby On Rails 3,Routing,Namespaces,我有一个管理名称空间和一个位于管理名称空间之外的公司脚手架。 我想把这些公司放到管理命名空间中 然后我将companys\u controller放入admin目录,并将定义更改为 class Admin::CompaniesController "companies#index" resources :companies end 名称空间:admin do root:to=>“公司指数” 资源:公司 结束 当我转到localhost:3000/admin时,我遇到以下错误: und
我有一个管理名称空间和一个位于管理名称空间之外的公司脚手架。 我想把这些公司放到管理命名空间中 然后我将companys\u controller放入admin目录,并将定义更改为
class Admin::CompaniesController
并将公司视图放入/app/views中的admin目录中/
并将companys_helper放入admin目录,现在显示如下:
module Admin::CompaniesHelper
end
模块管理员::CompanyHelper
结束
routes.rb中的命名空间:
namespace :admin do
root :to => "companies#index"
resources :companies
end
名称空间:admin do
root:to=>“公司指数”
资源:公司
结束
当我转到localhost:3000/admin时,我遇到以下错误:
undefined method `company_path' for #:0xb696b408>
#:0xb696b408>
现在请告诉我如何编辑链接,使链接正常工作 我得到了一种丑陋的解决方案,但它奏效了。我生成了一个新的脚手架,但不同的是:
rails生成脚手架管理::公司
而不是
rails生成脚手架公司
但是我仍然不明白助手是如何为资源创建url的:(当您将控制器移动到管理名称空间时,您将路由更改为脚手架模板中创建的链接。例如,如果您的模板使用公司路径,则链接将更改为管理公司路径
要在任何给定时间点查看应用程序中的路由,请从rails应用程序根目录中的命令行运行“rake routes”。这将显示应用程序中的所有路由,因为公司位于名称空间admin下,所以必须在路径前面加上admin前缀 像这样:
admin_company_path(@company)
有关Rails路由和名称空间的更多信息,请参阅此部分。我使用
Rails g scaffold Admin::Grommets生成了一个虚拟对象,然后将该脚手架与我手动移动到Admin中的文件进行了比较。