パRails🚂
rails s
できない可能性が高いです。
@hiromisugie
@motohiro-mm
2-3-3 「ルーティングとリソース」から
2-3-4 「例外処理」まで。
PR:https://github.com/KMZ0209/Perfect_Ruby_on_Rails_Ch2/pull/10
2-3-5 「StrongParameters」から。🚂
@sharoa
resources :publishers
の一行を書くだけで定義できるonly
を指定することで、指定したルーティングのみ生成するように制限できる。@sadanora
/publisfer/:id/detail
のような個別のリソースに対してアクションを設定する/publishers/search
のように全体のリソースに対するアクションを設定するActionController::InvalidAuthenticityToken
なら422とか、返すステータスコードが決まっている。rescue_from
を使って定義できる。
@moegi29
@hiromisugie
resources: hoges
のように1行で基本的なルーティングをまとめて定義できるresources
の拡張も可能。入れ子にすることでURL構造も階層にできたり、memger
やcollection
でより複雑な設定ができる(ちゃんとわかってないのでRailsガイドで要復習…!rescure_from
で例外を指定できる→これも理解が浅い、要復習…!@motohiro-mm
resources
はCRUD操作のルーティングができる
resources
のブロック中に設定を書くとリソースの親子関係(入れ子)をルーティングで表現できるmember
、collection
の使い方をもう一度確認するresource
はindexを除かれる、idもなくなるrescue_from
で自分で定義できる@sharoa
@sadanora
2-3-5 「StrongParameters」から
2-4 95p途中まで。
PR: https://github.com/KMZ0209/Perfect_Ruby_on_Rails_Ch2/pull/11
2-4 95p 「renderを省略した場合」から。🚂
@sharoa
StrongParameters
はMass Assignment機能を利用する際に起こりえる脆弱性へ対抗する手段のひとつ。@sadanora
@moegi29
@hiromisugie
scaffold
は自動的にストロングパラメーターを設定してくれるが、後からカラムを追加したときにストロングパラメーターも一緒に追加できているか確認した方が良いapp/views/books/show.html.erb
を描画してくれるdef show
render :show
end
@cellotak
@motohiro-mm
require
:リクエストに必要なキーを設定(例::user
)permit
:require
の中で受け付けても良いキーを設定(例::name
、:email
など)require
に指定したパラメータがparamsに含まれていなかった場合は、ActionController::ParameterMissing例外が発生@sadanora
@hiromisugie
2-4 95p 「renderを省略した場合」から
2-4-2 100pの途中まで。
PR: https://github.com/KMZ0209/Perfect_Ruby_on_Rails_Ch2/pull/12
2-4-2 100p 「variantsによるテンプレートの切り替え」から。🚂
@sharoa
render アクション名
と解釈される。@sadanora
respond_to
を使ってhtml
やjson
など返すコンテンツの出しわけができる。render
メソッドのオプションは、htmlとjsonくらいしか見たことがないけどfileとかinlineとか色々あるんだなーと思いました。@moegi29
respond_to
ブロックで出しわける。@hiromisugie
render
を省略すると、暗黙的にrender アクション名
と解釈されるhtml
とjson
が自動的に設定されているが、json
で出すケースも結構あるということなのだろうか?(まだjsonを活用したことがないので、邪魔だなと思ってしまう😅 RailsのAPIモードとかで活躍するのかな?)render 'form', task: @task
で_formのパーシャルを呼び出せる{ render :show, layout: "awesome_book" }
@cellotak
form
とすると、_form
という名前のテンプレートが読み込まれるredirect_to @book
は実際にはbook_path
というヘルパーメソッドを呼び出してリダイレクトが行われていて、redirect_to book_path(@book)
と同義になる (Railsマジックだ、、)render :show, layout:"awesome_book"
と記述することで特定のレイアウトを指定する事ができる (実際に確かめられてよくわかりました)@motohiro-mm
_
で始まるmaimux2x
@motohiro-mm
@cellotak
2-4-2 100p 「variantsによるテンプレートの切り替え」から
2-5 103p 途中まで。
PR:https://github.com/KMZ0209/Perfect_Ruby_on_Rails_Ch2/pull/13
2-5 103p 「url_for」から。🚂
@sharoa
yarn
忘れないでおきたい。variants
と呼ばれる機能がある。@motohiro-mm
_path
で/から始まるパス、_url
でドメインなども含んだ完全なURLをかえす@sadanora
_path
_url
app.edit_profile_path
のようにappオブジェクトを経由するとURLが取得できる@moegi29
@hiromisugie
+mobile.erb
というような、+
を使ったファイル名を初めて知った。Prefixの値+_path
で、ルーティングで定義したパスを取得できる@cellotak
request.variant
に:tablet
や:mobile
といった値を入力することでindex.html+tablet.erb
やindex.html+mobile.erb
のように+
とrequest.variant
の値のテンプレートが選択されるようになる@moegi29
@hiromisugie
2-5 103p 「url_for」から
PR:
2-5-3 109p 「Slim」から。🚂
@sharoa
@sadanora
url_for
link_to
form_with
などのヘルパーメソッドを使うと便利app/helpers/
に置ける。これはどのビューからも呼び出せる。raw
を使えばエスケープせずに出力されるらしいけど、使い所のイメージがわかなかった。@moegi29
url_for
はパス構築、link_to
はaタグを生成、form_withはフォームを構築するヘルパーメソッド。time_ago_in_words
とnumber_with_delimiter
は何か作るときに便利そう。@hiromisugie
url_for
はパスを構築するためのヘルパーメソッド。link_to
はaタグを生成できるヘルパーメソッド。これはviewファイルでよく見かける気がする。form_with
はフォームを構築するためのヘルパーメソッド。これもviewで、特にパーシャルの_form
で見かける。app/helpers/application.rb
に記述することで独自のヘルパーメソッドを作ることができる。erb
以外にもhaml
とか(今日はまだ読んでないけど)slim
とかある。haml
やslim
は慣れればラクなのだろうけど、なんかerb
がわかりやすいなぁと思ってしまう…。@motohiro-mm