link_toでmethod: :postが使えない
グループ招待機能を作成するときに、メールで招待したかったので、メイラーをいじっていた時、メールのテンプレートに<%= link_to invite_url(...), method: :post %>
としたのだが、createアクションに飛ばずにindexアクションに飛んでしまった。
これの原因は、 method:
というのはjavascriptの機能なので、javascriptを呼ばないとうまくうごかない。
railsではもともと、 application.html.erb
でjavascriptを呼んでいるので普通にコードを書いていても問題ないのだが、メールのテンプレートは、 application.html.erb
の外であるため使えない。
なのでメールのテンプレートでjavascriptを読んであげればうまく動くようになる。
正確には、rails-ujs
という機能らしい。
ActionController::InvalidAuthenticityToken
このエラーは簡単に言うとセキュリティが弱いという警告である。 CSRF対策ができていないためエラーになる。 urlなどにpostなどで渡すパラメーターが、もろに表示されてしまっているのである。 詳しくは、https://qiita.com/_ayk_study/items/88269643c675fd4ca975 解決方法は、 `protect_from_forgery` を加えてあげればよい。activestorage
acitvestorageは、画像をいかにもそのモデルのカラムとして扱うことができる。
なのでvue側から、channelを使ってレコードを作成するとき、一緒にimageを送ればモデルは正常にレコードを追加することができる。
ただしこのとき画像をちゃんとしたurlに整えなければならない。