是否可以将 JavaScript 对象作为参数传递给渲染中的局部哈希:部分调用



我认为这很容易通过查看代码来解释,所以我发布了几个片段,展示了我通常在 Rails 3.2 中如何做 Ajax 的事情,

以下方法将起作用:

创造.js.咖啡

$("<%= raw j(render(partial: @comment, locals: { str: 'string' })) %>")
  .appendTo("ul#comments")

_comment.html.哈姆尔

-puts "The variable's value is #{str}"
%li= comment.what

现在,我想做与上面相同的操作,但我想传递对象文字,而不是传递 JS 字符串文字,如下所示:

创造.js.咖啡

obj = 
  'v1': 'value'
  'v2': 'value'
$("<%= raw j(render(partial: @comment, locals: { o: obj })) %>")
  .appendTo("ul#comments")

当然,由于以下原因而失败:操作视图::模板::错误(未定义的局部变量或方法 'obj'...

有人知道如何完成我想做的事情吗?可能吗?让我知道我试图做的事情是否疯狂,如果是这样的话,正确的方法是什么......

谢谢!

好吧,我想客户端对象不会与服务器对象共享,除非我们进行远程处理。因此,在这种情况下,您必须将JS对象序列化为JSON或任何其他字符串格式(XML或任何其他结构),然后必须在Ruby对象中进行反序列化,或者您可以手动解析字符串并使用提供的信息。

最新更新