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