Ruby on Rails は初めてなので、これはばかげた質問かもしれません。私はアプリを持っており、宝石を問題なくバンドルできます。そこで、ほとんど静的なページをいくつか追加したいと思います。rails generate controller MostlyStatic page1 page2 を使用して、それらのコントローラーを生成しようとしました。これにより、mostly_static という名前のコントローラーと、page1 および page2 という名前のページが生成されます。代わりに、エラーをスローします。どうやら、生成コマンドは、まだ作成していないデータベースに接続しようとしています。これらのページにはデータベース テーブルであるべきものは何もないので、なぜこの時点でデータベースがプロセスに組み込まれているのか、少し混乱しています。私はさまざまなチュートリアルを調べましたが、静的ページのコントローラーを生成するためにデータベースが必要であるとは言いません。そう... 私は何が欠けていますか?静的ページを生成するためだけに、最初にデータベースを作成する必要がありますか? もしそうなら、その後、その世代によって作成されたテーブルを削除すると、アプリの機能が損なわれますか? 私は本当に、静的なページがぶらぶらしている無駄なテーブルの束を望んでいません。データベースなしでこれらのページとコントローラーを生成する方法はありますか?
2 に答える
コントローラーを生成するための規則に従っていません。コントローラを生成しても、データベース テーブルは作成されません。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'
データベースは設定されておらず、ページにアクセスできます。あなたがする必要があるのはそれだけです。複数のコントローラーと単一のモデルとレールのように、規則に従ってください。詳細は処理されます。これで始められることを願っています
アップデート
ここのコメントへの応答として、コントローラー生成の標準出力を示します。私の例ではerbの代わりにhamlを使用しましたが、出力にはデータベースに関連するものは何もありません.
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
この質問に出くわした人にとって、正しい答えは、データベースが存在する必要はないということですが、構成ファイルに存在するかのように適切に構成する必要があります。コントローラーを生成しても、実際にはデータベースは作成されません。