2011-03-01 30 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的建议。