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に整えなければならない。