読者です 読者をやめる 読者になる 読者になる

Railsガイド メモ

programming

Railsガイドを読み始めたので、その備忘メモ (チェックしたアイテムをリストするだけです。)

第1章

rails new blog

rails server

コントローラ

ビュー: eRuby (ERB とも、Embedded Ruby とも呼ばれます)

rails generate controller welcome index

Rails.application.routes.draw do
  resources :articles
root 'welcome#index' end

rake routes コマンド

     articles GET    /articles(.:format)          articles#index
              POST   /articles(.:format)          articles#create
  new_article GET    /articles/new(.:format)      articles#new
 edit_article GET    /articles/:id/edit(.:format) articles#edit
      article GET    /articles/:id(.:format)      articles#show
              PATCH  /articles/:id(.:format)      articles#update
              PUT    /articles/:id(.:format)      articles#update
              DELETE /articles/:id(.:format)      articles#destroy

コントローラの内側で定義されたメソッドは、コントローラのアクションにな ります。

コントローラのアクションになれるのは public メソッドだけです。

ヘルパメソッド:form_for FormBuilder オブジェクト (ActionView::Helpers::FormBuilder)

<%= form_for :article, url: articles_path do |f| %>

render plain: params[:article].inspect

Rails のモデルは、単数形の名前を持ち、対応するデータベーステーブル名は複数形で 表されるというルールがあります。

rails generate model Article title:string text:text

rails generate model を実行すると データベースマイグレーショ ン ファイルが db/migrate の下に作成されます。

rake db:migrate

production (本番) 環境など、development 以外の環境に対してもマイグレーションを実行した い場合は、rake db:migrate RAILS_ENV=production のように環境変数を明示的 に指定する必要があります。

redirect_to @article モデルを保持している@article を指定するだけで、そのモデルを表示するための show アクションにリダイレクトされる点にご注目ください。

ActiveModel::ForbiddenAttributesError

チェックされていないパラメータをまるごとモデルに保存する行為は、モ デルに対する「マスアサインメント」と呼ばれています。

params.require(:article).permit(:title, :text)

link_to メソッドは、Rails のビルトインヘルパーの 1 つ

TIP: 現在と同じコントローラのアクションにリンクする場合は、controller の指 定は不要です。デフォルトでは現在のコントローラが使用されるからです。

TIP: development モード (これは Rails のデフォルトのモードです) では、Rails は リクエストのたびにアプリケーションを再読み込みします。これは開発をやりやす くするためであり、変更を行なうたびに Rails の Web サーバーを再起動する必要は ありません。

TIP: Rails では、エラーメッセージを含むフィールドは自動的に field_with_errors クラスを持つ div タグで囲まれます。これを利用して、エ ラーメッセージをもっと目立たせるように css ルールを定義しても構いません。