Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3命名空间路由_Ruby On Rails 3_Routing_Namespaces - Fatal编程技术网

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中的文件进行了比较。