gyaboooのゆる〜いブログ

ゆるくレンタルサーバーの保守してます

Ruby Rails 勉強日記02

今日の内容

  • ルーティングのネスト
  • 部分テンプレート

ルーティングのネスト

内容

ルーティングを別のルーティングに渡す

書き方

resorces :[controller名1] do
  resorces :[controller名2]
end

結果

con1_con2 GET /[con1] /:[con1]_id/[con2](.:format) [con2]#index
          POST /[con1] /:[con1]_id/[con2](.:format) [con2]#create
・
・
・

部分テンプレート

内容

ビューで使い回しができるテンプレート

ファイル名

_[名前].html.erb

ビューでの使い方

<% render partial: "[名前]", locals { 変数名: 値 } %>

感想

詳細な使い方は調べていないので今後、調べて使ってみる

Ruby勉強日記01

今日の内容

  • binding.pryでデバッグ
  • kaminariでページネーション
  • deviseでログイン機能
  • その他

binding.pryでデバッグ

内容

Railsのコードを途中で止めて変数やらメソッドやら確認・実行できる
止めたいコードの次の行に「binding.pry」を追加すればそこで止まる
ターミナルで rails s を実行して変数の内容とか確認
例:

    5: def index
    6:   @model = Model.all
 => 7:   binding.pry
    8: end

[6] pry(#<TweetsController>)> params
=> <ActionController::Parameters {"controller"=>"model", "action"=>"index"} permitted: false>

kaminariでページネーション

内容

ページネーションが簡単にできるrubyライブラリ

インストール

  1. Gemfileにgem 'kaminari'を記載
  2. Gemfileがあるディレクトリでターミナルでbundle install

使い方

<モデルのインスタンス>.page(params[:page]).per(何個ごとにページネーションするか、数字)

deviseでログイン機能

内容

ログイン機能が簡単に実装できるrubyライブラリ

インストール

  1. Gemfileにgem 'devise'を記載
  2. Gemfileがあるディレクトリでターミナルでbundle install

使い方

  1. rails g devise:installを実行
    作成されるファイル
    config/initializers/devise.rb
    config/locales/devise.en.yml
  2. rails g devise userを実行
    作成されるファイル
    app/models/<ユーザーモデル名>.rb
    db/migrate/2014XXXXXXXXXX_devise_create_users.rb
    test/fixtures/users.yml
    test/models/user_test.rb
  3. rake db:magirateでDBテーブル作成
  4. user_signed_in?でログインしているかどうか判定
  5. prefixというルーティングのパスが入った変数が使えるのでビューで利用
    prefix名の最後には「_path」をつけないと使えない
  6. rails g devise:viewsでdevise用のビューを作成
    作成されるファイル
    app/views/devise以下のディレクトリにあるビューファイル各種

その他

before_action

コントローラーでbefore_action :メソッド名と記述することで、コントローラのアクションが実行される前にそのメソッドを実行

redirect_toメソッド

redirect_toメソッドをアクション内で利用すると、そこからさらに別のアクションを実行したり、ビューに遷移させたりできaction: :indexという形で、キーがaction:バリューが:indexであるハッシュを指定

カラムを追加するためのマイグレーションファイル作成

rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型