2013-06-11 73 views
0

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

回答

0

对于任何人碰到这个问题磕磕绊绊,正确的答案是,数据库不需要存在,但必须正确配置,如果它没有在配置文件中。生成控制器实际上并不创建数据库。

3

您没有按照惯例生成控制器。生成控制器不会创建数据库表。您必须致电rails generate modelrails generate resourcerails generate scaffold

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

rails generate controller static_pages home help contact 

注意发生器是复数和蛇情况(static_pages)。这会产生静电控制器和home.html.erbhelp.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' 

没有建立数据库,您可以访问这些页面。这就是你需要做的。只需按照约定,像复数控制器和单一模型和轨道照顾的细节。希望这可以让你开始

UPDATE

响应评论这里是产生一个控制器的标准输出。注意我的例子使用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 
+0

尽管我很欣赏尝试提供帮助,但您在这里所说的大部分内容并不准确。即使生成的控制器是蛇形,您也可以使用骆驼或蛇壳来生成控制器。至于尝试[代码]铁轨生成控制器static_pages家庭帮助联系[/ code],这基本上是我第一次尝试。确切地说,我仍然得到数据库错误后。我找不到任何参考文献,但在控制器之前的数据库的新版本中必须有一些规则。 –

+0

作为我的观点的参考:骆驼案件与蛇案件,请参阅本麦克哈特尔指南3.4节,这应该是最好的。虽然我会承认在本指南中,实际上在这一部分,他说在数据库显然不工作之前生成静态页面控制器。无论如何,这里是链接。 HTTP://红宝石。railstutorial.org/chapters/static-pages#sec-static_pages –

+0

我实际上使用该教程作为示例来向您展示如何生成静态页面。生成控制器与数据库无关。静态页面的重点在于它们不会保留数据库中的数据。它们是静态的。他们不改变。我认为你在混合控制器和模型。如果你需要一个数据库表,只需要生成一个控制器(复数)和一个同名的模型(单数)。或者用“rails生成脚手架”一步完成。我的答案中的信息没有任何问题。只是提供我的帮助,不应该被拒绝投票。 – fontno