2013-06-11 76 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