在rails中生成控制器的问题

时间:2013-06-11 19:29:59

标签: ruby-on-rails controller

Ruby on Rails的新手,所以这可能是一个愚蠢的问题。我有一个应用程序,我可以毫无问题地捆绑我的宝石。所以现在我想添加一些主要是静态的页面。我尝试使用rails生成控制器为它们生成一个控制器MostlyStatic page1 page2。这应该生成一个名为mostly_static的控制器和名为page1和page2的页面。相反,我抛出一个错误。显然,generate命令正在尝试连接到我尚未创建的数据库。这些页面中没有任何内容应该是数据库表,所以我有点困惑为什么数据库在这个时刻被带入进程。我查看了各种教程,没有人说数据库需要为静态页面生成控制器。那么......我错过了什么?我是否需要首先创建数据库才能生成静态页面?并且,如果是这样,随后丢弃该代创建的任何表会损害我的应用程序的功能?我真的不想要一堆无用的表来静止页面。有没有办法在没有数据库的情况下生成这些页面和控制器?

2 个答案:

答案 0 :(得分:3)

您没有遵循生成控制器的约定。生成控制器不会创建数据库表。您必须致电rails generate modelrails generate resourcerails generate scaffold

所以你想要一个静态页面的控制器。试试这个

rails generate controller static_pages home help contact

请注意,生成器是复数和蛇案例(static_pages)。这将生成静态控制器以及home.html.erbhelp.html.erbcontact.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

答案 1 :(得分:0)

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