これはコードを見れば簡単に説明できると思うので、Rails3.2で通常どのようにAjaxを実行するかを示すスニペットをいくつか投稿します。
以下が機能します。
create.js.coffee
$("<%= raw j(render(partial: @comment, locals: { str: 'string' })) %>")
.appendTo("ul#comments")
_comment.html.haml
-puts "The variable's value is #{str}"
%li= comment.what
ここで、上記と同じことを行いたいのですが、JS文字列リテラルを渡す代わりに、次のようにオブジェクトリテラルを渡します。
create.js.coffee
obj =
'v1': 'value'
'v2': 'value'
$("<%= raw j(render(partial: @comment, locals: { o: obj })) %>")
.appendTo("ul#comments")
もちろん、これは次の理由で失敗します: ActionView :: Template :: Error(未定義のローカル変数またはメソッド `obj'.. ..
誰かが私がやろうとしていることを達成する方法を知っていますか?それは可能ですか?私がやろうとしていることが正気でないかどうか、そしてその場合の適切な方法は何かを教えてください。
ありがとう!