Ruby on rails rails中的控制器生成问题

Ruby on rails rails中的控制器生成问题,ruby-on-rails,controller,Ruby On Rails,Controller,RubyonRails是新手,所以这可能是一个愚蠢的问题。我有一个应用程序,我可以捆绑我的宝石没有问题。所以现在我想添加一些主要是静态页面。我尝试使用rails generate controller MostlyStatic page1 page2为他们生成一个控制器。这将生成一个名为static的控制器以及名为page1和page2的页面。相反,我抛出了一个错误。显然,generate命令正试图连接到我尚未创建的数据库。在这些页面中没有任何应该是数据库表的内容,所以我有点困惑,为什么在这个关

RubyonRails是新手,所以这可能是一个愚蠢的问题。我有一个应用程序,我可以捆绑我的宝石没有问题。所以现在我想添加一些主要是静态页面。我尝试使用rails generate controller MostlyStatic page1 page2为他们生成一个控制器。这将生成一个名为static的控制器以及名为page1和page2的页面。相反,我抛出了一个错误。显然,generate命令正试图连接到我尚未创建的数据库。在这些页面中没有任何应该是数据库表的内容,所以我有点困惑,为什么在这个关头将数据库引入到流程中。我浏览了各种教程,没有人说需要数据库来为静态页面生成控制器。所以我错过了什么?我是否需要先创建数据库来生成静态页面?如果是这样,那么随后删除该代人创建的任何表是否会损害我的应用程序的功能?我真的不想有一堆无用的表格来存放静态页面。有没有办法在不使用数据库的情况下生成这些页面和控制器?

您没有遵循生成控制器的约定。生成控制器不会创建数据库表。您必须通过调用
rails generate model
rails generate resource
rails generate scaffold
来实现这一点

因此,您需要一个控制器,用于几个静态页面。试试这个

rails generate controller static_pages home help contact
请注意,生成器是复数的,并且是蛇形的(静态页面)。这将生成静态控制器和
home.html.erb
help.html.erb
contact.html.erb
页面

现在,您可以在控制器中使用这些操作访问页面

def home
end

def help
end

def contact
end
还需要确保路线已设置好

# routes.rb

match '/home',    to: 'static_pages#home'
match '/help',    to: 'static_pages#help'
match '/contact',    to: 'static_pages#contact'
没有设置数据库,您可以访问这些页面。这就是你需要做的。只需遵循约定,比如复数控制器和单数模型,rails会处理细节。希望这能让你开始

更新

这里的注释是生成控制器的标准输出。注意,我的示例使用haml而不是erb,但是输出中没有与数据库相关的内容

rails g controller static_pages home help contact
  create  app/controllers/static_pages_controller.rb
   route  get "static_pages/contact"
   route  get "static_pages/help"
   route  get "static_pages/home"
  invoke  haml
  create    app/views/static_pages
  create    app/views/static_pages/home.html.haml
  create    app/views/static_pages/help.html.haml
  create    app/views/static_pages/contact.html.haml
  invoke  rspec
  create    spec/controllers/static_pages_controller_spec.rb
  create    spec/views/static_pages
  create    spec/views/static_pages/home.html.haml_spec.rb
  create    spec/views/static_pages/help.html.haml_spec.rb
  create    spec/views/static_pages/contact.html.haml_spec.rb
  invoke  helper
  create    app/helpers/static_pages_helper.rb
  invoke    rspec
  create      spec/helpers/static_pages_helper_spec.rb
  invoke  assets
  invoke    coffee
  create      app/assets/javascripts/static_pages.js.coffee
  invoke    scss
  create      app/assets/stylesheets/static_pages.css.scss

您没有遵循生成控制器的约定。生成控制器不会创建数据库表。您必须通过调用
rails generate model
rails generate resource
rails generate scaffold
来实现这一点

因此,您需要一个控制器,用于几个静态页面。试试这个

rails generate controller static_pages home help contact
请注意,生成器是复数的,并且是蛇形的(静态页面)。这将生成静态控制器和
home.html.erb
help.html.erb
contact.html.erb
页面

现在,您可以在控制器中使用这些操作访问页面

def home
end

def help
end

def contact
end
还需要确保路线已设置好

# routes.rb

match '/home',    to: 'static_pages#home'
match '/help',    to: 'static_pages#help'
match '/contact',    to: 'static_pages#contact'
没有设置数据库,您可以访问这些页面。这就是你需要做的。只需遵循约定,比如复数控制器和单数模型,rails会处理细节。希望这能让你开始

更新

这里的注释是生成控制器的标准输出。注意,我的示例使用haml而不是erb,但是输出中没有与数据库相关的内容

rails g controller static_pages home help contact
  create  app/controllers/static_pages_controller.rb
   route  get "static_pages/contact"
   route  get "static_pages/help"
   route  get "static_pages/home"
  invoke  haml
  create    app/views/static_pages
  create    app/views/static_pages/home.html.haml
  create    app/views/static_pages/help.html.haml
  create    app/views/static_pages/contact.html.haml
  invoke  rspec
  create    spec/controllers/static_pages_controller_spec.rb
  create    spec/views/static_pages
  create    spec/views/static_pages/home.html.haml_spec.rb
  create    spec/views/static_pages/help.html.haml_spec.rb
  create    spec/views/static_pages/contact.html.haml_spec.rb
  invoke  helper
  create    app/helpers/static_pages_helper.rb
  invoke    rspec
  create      spec/helpers/static_pages_helper_spec.rb
  invoke  assets
  invoke    coffee
  create      app/assets/javascripts/static_pages.js.coffee
  invoke    scss
  create      app/assets/stylesheets/static_pages.css.scss

对于遇到这个问题的任何人来说,正确的答案是数据库不需要存在,但必须正确配置,就像它确实存在于配置文件中一样。生成控制器实际上并不创建数据库。

对于遇到此问题的任何人,正确的答案是数据库不需要存在,但必须正确配置,就像它确实存在于配置文件中一样。生成控制器实际上并不创建数据库。

虽然我非常感谢您的帮助,但您在这里所说的大部分内容都不准确。您可以使用camel-case或snake-case生成控制器,即使生成的控制器将是snake-case。至于尝试[code]rails生成控制器静态页面主页帮助联系[/code],这基本上就是我最初尝试的。在完全尝试之后,我仍然得到数据库错误。我找不到任何相关的参考资料,但在新版rails中必须有一些关于控制器之前的数据库的规则。关于我的观点:驼峰案例与蛇案例,请参阅Mike Hartl指南的第3.4节,这应该是最好的。尽管我承认,在本指南中,在本节中,他实际上是说在数据库之前生成静态页面控制器,这显然是不起作用的。无论如何,这里是链接。实际上,我以该教程为例,向您展示了如何生成静态页面。生成控制器与数据库无关。静态页面的要点在于它们不是持久化数据库中的数据。它们是静态的。它们不会改变。我认为你把控制器和模型搞混了。如果您需要一个数据库表,只需生成一个控制器(复数)和一个同名的模型(单数)。或者使用
rails生成scaffold
一步完成。我的回答中的信息没有错。只是提供我的帮助,不应该被否决。这并不难,但这正是按照您的建议运行命令的结果:rails生成控制器静态页面主页帮助联系人/home/usr/.rvm/gems/ruby-2.0.0-p195/gems/mysql2-0.3.11/lib/mysql2/client.rb:44:in“connect”:拒绝用户“root”@“localhost”的访问(使用密码:否)(Mysql2::Error)。然后是大约30行其他数据库错误。这显然需要数据库生成控制器,否?否,无论数据库错误发生了什么,我都不确定。请参阅我更新的答案。我从未在生成控制器时看到过这种错误。它必须是som