2011-03-01 46 views
0

我有一個導軌查看,foo.html.erb調用JavaScript功能時數據準備好(在ERB視圖)

<% content_for :head do %> 
    <script type="text/javascript"> 
    function showData(data) { 
      // ..do stuff here 
    } 
    </script> 
<% end % 

<% if [email protected]? %%> 
    <div id="where_data_will_go"></div> 
<% end % 

的「@data」是JSON從服務器(即服務器的操作,使:json @data)。

當@data不爲空(即我有一些數據)時,如何調用「showData」?

回答

0
<% unless @data.nil? %> 
    <script>showData('<%= escape_javascript(@data) %>');</script> 
<% end %> 

請注意,頭部的功能也必須在<script> -tags內。

+0

謝謝,儘管我才意識到,當我使用: 渲染:JSON => @data 在我的控制器,Firefox 3的想要打開的頁面作爲一個文件B/C的內容的類型是application/JSON 。 – codecraig 2011-03-01 11:54:31

+0

如果需要,您也可以直接在視圖內的視圖中將數據呈現爲JSON。 – 2011-03-01 13:24:06

0

由於Firefox 3無法處理內容類型的應用程序/ json(即,它想將其作爲文件下載,它不會自行打開它),所以我必須做其他事情。

我的控制器有兩個方法:

def foo 
end 

def foo_json 
# get data and render json 
render :json => @data 
end 

我認爲現在有一個空的將存儲JSON一旦我用它做什麼。我用:

$(document).ready(function() { 
    $.getJSON(....) 
}); 

來填充我的div時,頁面加載,這很好。感謝Radek的建議。