2011-06-04 77 views
0

我正在开发一个Rails项目,其中我有一些奇怪的情况,需要将模板(通过ajax)加载到现有页面中,并使用来自从该页面发送的Ruby数组。这是我的例子:通过Ajax和解析传递Ruby数组

文章页:

<div class="article"></div> 

<% @article = my_article_array.to_json %> 

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
      $.ajax({ 
       type: 'post', 
       data: { 'article' : '<%= @article %> }, 
       url: '/articles/show', 
        success: function(result) { 
        $(".article").html(result); 
        } 
      }); 
    }); 
</script> 

控制器:

def show 
    @article = JSON.parse(params[:article]) 
    redner :template => false 
end 

模板:

<h1><%= @article.title %></h1> 
<p><%= @article.body %></p> 

这导致Rails的错误:“JSON.parse意外的标记错误”。

我已经尝试了几十个不同的场景,但是先将数组转换为JSON,然后再解码一次,似乎是最有意义的。无论如何,我的尝试都没有奏效。

任何见解将不胜感激!

+0

你可以给我们发送到你的应用程序的JSON吗? – 2011-06-04 05:53:22

回答

0

使用JSON将数据传输到页面并返回应该不成问题。如果你的实际代码与你的例子差不多一样乱七八糟,那么你可能只是有一些错误来挤压并且走在正确的轨道上。

+0

感谢您的回复。上面使用的代码仅仅是为了说明问题。然而,看起来rails在传输JSON数组时会执行某种字符转义,因此我最终会得到&lt和其他实体,因此重建传输的数组会返回一个错误。这是正常的Rails(v3.0.5)的行为? – ericalli 2011-06-04 01:54:46

+0

@ two2twelve如果你有一个Ruby数组中的数据,并且你想在没有转义的json中执行这个操作,只需要执行 - some_array.to_json.html_safe – 2011-06-21 08:00:19