Ruby on Rails的新手,所以这可能是一个愚蠢的问题。我有一个应用程序,我可以毫无问题地捆绑我的宝石。所以现在我想添加一些主要是静态的页面。我尝试使用rails生成控制器为它们生成一个控制器MostlyStatic page1 page2。这应该生成一个名为mostly_static的控制器和名为page1和page2的页面。相反,我抛出一个错误。显然,generate命令正在尝试连接到我尚未创建的数据库。这些页面中没有任何内容应该是数据库表,所以我有点困惑为什么数据库在这个时刻被带入进程。我查看了各种教程,没有人说数据库需要为静态页面生成控制器。那么......我错过了什么?我是否需要首先创建数据库才能生成静态页面?并且,如果是这样,随后丢弃该代创建的任何表会损害我的应用程序的功能?我真的不想要一堆无用的表来静止页面。有没有办法在没有数据库的情况下生成这些页面和控制器?
答案 0 :(得分:3)
您没有遵循生成控制器的约定。生成控制器不会创建数据库表。您必须致电rails generate model
,rails generate resource
或rails generate scaffold
。
所以你想要一个静态页面的控制器。试试这个
rails generate controller static_pages home help contact
请注意,生成器是复数和蛇案例(static_pages)。这将生成静态控制器以及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
答案 1 :(得分:0)
对于任何绊倒这个问题的人来说,正确的答案是数据库不需要存在,但必须正确配置,就好像它确实存在于配置文件中一样。生成控制器实际上并不创建数据库。