我学习了Hartl的Rails教程,他在教程中使用RJS进行Ajax,并在响应中发送javascript,以便在客户端执行以编辑DOM。
但是,如果只想在响应中发送JSON而不发送javascript,该怎么办。这也意味着操作DOM的javascript应该已经在客户端的html文件中了。关于如何在Rails中做到这一点,有没有像Hartl的书一样好的教程。大概它会使用Jquery和其他一些我可能没有听说过的东西来使代码不是一百万行?
我对答案的最佳尝试是,它实际上取决于您试图实现的目标的范围和复杂性。通常,JSON显示在视图中。如果您的应用程序不需要动态检索JSON,也就是说,您可以在最初呈现视图时加载所有JSON,那么您可以在视图的控制器中设置一个实例变量,如下所示@my_json = some_object.to_json()
然后,您的实例变量在视图中可用
<script type = 'text/javascript'>
var theJSON = <%= @my_json %>
</script>
现在,您的数据在DOM中可用,可以很好地解析为JSON。
如果您的应用程序要求您在加载控制器/视图后动态检索JSON,那么您可能应该考虑使用AJAX来调用返回您所需JSON的特定控制器的方法。
这里有一个很好的RailsCast,有望帮助您将数据传递到Javascript
您应该看看Rails 3.1中的Ajax-a Roadmap。