下記にWEBページ作成にあたり、よく使うであろうものをまとめます。
気が向いたときに追記していきます。
ページネーションの実装にはkaminariを使う。
kaminari:pageメソッドと、kaminari:perメソッドがある。
【参考】kaminari徹底入門
link_toメソッド
link_to(body,url[,html_options])
body:リンクテキスト
url:URLのパス
htm;options:<a>要素に付与する属性
第三引数として、httpメソッドを指定できる
HTTPリクエスト
Railsのリソースの7つのアクション | 役割 |
---|---|
get | サーバーからブラウザに情報を返す。単にウェブサイトを閲覧する際にはこのメソッドが利用されている。 |
post | ブラウザからサーバーに情報を送信し、サーバーに情報を保存する。情報の登録などの際に、サーバーに情報を送信するために利用される。 |
delete | ブラウザからサーバーに情報を送信し、サーバーに情報を保存する。情報の登録などの際に、サーバーに情報を送信するために利用される。 |
patch | ブラウザからサーバーに情報を送信し、サーバー内の情報を置き換える。登録情報の更新などの際に、サーバー内のデータを更新するために利用される。 |
rake routesコマンドでHTTPリクエストの一覧を表示できる。
コマンド実行
#moooviディレクトリに移動
$ cd mooovi
#rake routesコマンドを実行
$ rake routes
出力結果
Prefix Verb URI Pattern Controller#Action
search_products GET /products/search(.:format) products#search
product GET /products/:id(.:format) products#show
root GET /
Railsのリソースの7つのアクション
Railsのリソースの7つのアクション | 役割 |
---|---|
index | リソースの一覧を表示する。 |
show | リソースの内容を表示する。 |
new | リソースを追加する。 |
create | リソースを追加し、作成する。 |
edit | リソースを更新するためのフォームを表示する。 |
update | リソースを更新する。 |
destroy | リソースを削除する。 |
【例】
class TweetsController < ApplicationController
def index
@tweets = Tweet.includes(:user).page(params[:page]).per(5).order("created_at DESC")
end
end
resourcesメソッド
Railsの基本となるコントローラの7つのアクションで記載した7つのアクション名に対してのルーティングを自動で生成するメソッド。
テーブルに保存されるレコード1つの情報のことをリソースと呼ぶ。
従来なら、下記のようにモデルからビューへのルーティングを指定する。
TechReviewSite::Application.routes.draw do
get 'products/:product_id/reviews/new' => 'reviews#new'
post 'products/:product_id/reviews' => 'reviews#create'
end
しかし、このように パス と アクション を自分で考えて定義していくのは面倒。このとき、resourcesメソッドが使える。
【例】
Rails.application.routes.draw do
resources :books
end
ルーティングのネスト
ネストとは入れ子構造とも呼ばれ、ある記述の中に入れ子構造で別の記述をする方法です。
ルーティングでいうと、あるコントローラへのルーティングの記述の中に、別のコントローラへのルーティングを記述するということを指します。
自分は下記のように理解してます。間違ってるかも?
要は、どのモデルに対するデータなのかを明示するために使う。
例:どのツイートに対するコメントなのか
部分テンプレート
ビューを作成する際に同じようなレイアウトの部分が複数存在する場合、同じHTML構造の部分を共通化することによって、無駄なくビューファイルを作成することが出来ます。
部分テンプレートのファイル名は必ずアンダーバー「_」から始まります。
renderメソッド
renderメソッドは、部分テンプレートを呼び出す際に利用するメソッドです。
render partialオプション
renderメソッドに :partialというオプションをつけることで、明示的に部分テンプレート名を指定し、部分テンプレートを表示することができます。
下の例では、_sample.html.erbという部分テンプレートを呼び出しています。
render partial: "sample"
render localsオプション
また、localsというオプションを用いると部分テンプレート内でその変数を使えるようになります。
render partial: "sample", locals: { tweet: "hello!" }