2011-06-04 80 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