Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

Rails日記Appの制作 ~自動ルーティング~

自動ルーティング
RESTfulな設計に従ってアプリケーションを作る場合、Railsではルーティングを自動で行わせることができる

# routes.rb
resources : リソース名(今回はcontroller名)
resources: リソース名, only: [:index, :new, :create, :show]
  • 詳細ページへのリンクの書き方
<!-- 追加 post オブジェクトを指定することで、そのページの詳細画面を表示させることができる-->
# link_toのid以降の書き方なんだこれ
<td><%= link_to '詳細', post, id: "detail-" + post.id.to_s, class: 'btn btn-outline-info' %></td>
# ルーティング設定状況の確認
~~/rails/info/routes
# 普通に post.id だけでいけた。ソースを分かりやすくするために、文字列結合させて' detail-1' とかになるようにしてるみたい
<td><%= link_to '詳細', post, id: post.id, class: 'btn btn-outline-info' %></td>

link_toメソッドの使い方

  • 【methodオプションを指定する例】
<%= link_to “削除”, member_path(params[:id]), method: :delete %>

methodオプションではHTTPメソッドの種類を指定します。何も指定しなければGETになります。
  • 【属性を指定する例】
<%= link_toTOP”, root_path, class: “menu” %>

これは、aタグの<a href=”/” class=”menu”>のようなタグになります。

分からなかったとこ

  • renderメソッドってどういうときに必要か?
  • パーシャルで変数を呼び出すときに、インスタンス変数でないのはなぜか?
<!-- @post ではないのか -->
 <h4><%= post.title %></h4>

これらがだいぶ謎。あとで調べよ

<!-- newアクションのビューを呼ぶとき -->
<%= render partial: 'form', locals: { post: @post} %>
<!-- shiwアクションのビューを呼ぶとき -->
<%= render @post %>
これでも呼べてた
<%= render partial: 'form', locals: { post: @post} %>

パーシャルファイル化するメリット

  • 共通の処理をまとめられる
  • controllerからビューを切り離す[これ!]

この観点から言うと、 pathとlocals: {} を使った書きかたの方が切り離しができているとのこと。
なぜ。
qiita.com

突破したい

qiita.com

controllerの変数の疑問は、単に変数のスコープの違い(インスタンス変数として使いたいか、ローカル変数として使いたいか)であった

techacademy.jp