ajaxで実装すると、結構面倒になるのがflashメッセージの表示。
そしてそれ以前にredirect_toも効かないから面倒臭い。
まずredirect_toに関してだが、これは
render :js => "window.location = '/posts/#{@post.id}'"
このように記述することでajaxでも機能させることができる。
そしてflashメッセージの代入はいつも通り上記のリダイレクト処理をするよりも上の行に書いておく。
ここまでで、コメントを空で送信した時にフラッシュメッセージを表示することができる。
しかし問題は、次にコメントを正しく投稿した後もこのflashメッセージが残ってしまうということだ。
これを解決するにはcreate.js.erbで
$('#comment-error-explanation').remove();
を記述することだ。(id属性はflashメッセージの部分に付与しておく)
以上の手順で実装完了。今回はたったこれだけに50分近く戸惑った。
おそらくこの記事はわかりづらいと思うので、コードの部分をコピペしてそのまま検索エンジンにかけてくれれば
他の誰かがもっとわかりやすく解説している記事に当たると思うのでその方法をお勧めする。
ではまた!