質問: JSON.parse(event.data)`に対して、sharedディレクトリにある部分テンプレート`_post.html.erb`を適用したものをチャットの本体に次々と挿入したいと考えていますが、その方法がわかりません。色々やってみたところ、`.append(<%...%>)`内でpostハッシュがうまく機能していない(undefined local variable or method 'post' for ...)らしいことがわかりました。 どなたか解決策を教えてくださいませんか。
回答: 端的に言うなら、Javascriptの変数をerbで使うことはできません。 erbに含まれる`<%...%>`がサーバー側で`render`され、そのHTMLをブラウザが受け取り、Javascriptが実行され、`post`変数が生まれる、という順番ですから、`.append(<%...%>)`を処理する時点では`post`変数は存在しないことになります。 今回のケースだと、`render_to_string`したHTMLを送るようにしてはいかがでしょうか。この方法であれば`_post.html.erb`をそのまま使うことができます。 参考 この記事ではHTMLだけをクライアントに送っていますが、JSONの中に文字列として含めるという手もあるかと思います。