6章
Bootstrap
BootstrapのインストールにはjQueryとpopper.jsも必要。
yarn install bootstrap@4.4.1 jquery@3.5.1 popper.js@1.16.1
|
|
いろいろメモ
- OmniAuth
- [メモ][Rails]コントローラーのメソッドをヘルパーとしてビューで使う - Qiita
belongs_to :user, optional: true
- 関連先がなくてもバリデーションエラーにならない。
- event_idと複合インデックスを張る場合、referencesメソッドでデフォルトで作られるインデックスは不要
t.references :event, null: false, foreign_key: true, index: false
form_with
form_with
はデフォルトでdata-remote="true"
属性を持つformタグを作成する。rails-ujsはこれを捉えて自動的にAjaxで非同期にフォームの内容を送信する。
なので、バリデーションエラーはSJR(Server-generated-JavaScript Responses)で対応するとよいと考えている。例えば……
|
|
で、失敗時はcreate.js.erb
でエラーメッセージを表示するJSを組む。
このAjaxの挙動をオフにするときは、form_with
にremote: true
オプションを付ける(そうはいっても大概付けるよね……)。
直接getアクセスしたときのためにRoutingErrorをraiseする?
p.330
TicketController#new
を定義する意味がわからなかった。
link_to '参加する', new_event_ticket_path
ってログインしていないときにしか表示しないエラーなんだから、authenticated?
メソッドに直接ぶっ飛ばせばよくね?と思ったけど、ルーティング用意しないといけない&privateだから呼び出せない?から?
まあ、authenticated?
はアクションとして用意したメソッドじゃないから、直接飛ばすのは歪になるけども。。。
ルーティングで拾ってルーティングエラー用のアクション(これはApplicationControllerで作るか?)に飛ばす、だといかんのかね?
なんかわざわざnewにするのは、betterではあるけどbestかというと微妙っぽい気がする。
これは現場によって設計が違いそうな気がするけどどうなんでしょー????
と思ってRUNTEQのslickに投げたら、講師陣も同じことを言っていました。
ルーティングでonly
オプションをつければいいのでは、とのこと。
ていうか、new_event_ticket_path
じゃなくて"/sonna_routing_ha_naiyo"
とかにすれば、undefined local variable or method
ってエラーも出ないからいいのでは。
バリデーションエラーメッセージ
errors[:base]
にメッセージを格納すると、余計な言葉がないエラーメッセージにできる!!
|
|
Active Record バリデーション - Railsガイド
throw(:abort)
- destroy処理を中断する
destroyのバリデーションするとき、return falseじゃなくてthrow :abortになったよ - Qiita