0

我认为这很容易通过查看代码来解释,因此我发布了一些片段,展示了我通常如何在 Rails 3.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 (undefined local variable or method `obj'...

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

谢谢!

4

1 回答 1

0

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

于 2012-06-15T15:01:06.360 回答