如何呈现.js.erb模板并返回JSON数据

时间:2012-06-04 06:52:28

标签: jquery ruby-on-rails routing rendering

我有一些调用URL mysite.com/articles.js的javascript,它向文章控制器的索引操作发送请求。我需要以JSON格式将数据返回到javascript函数,但在此之前,我想通过渲染index.js.erb来更新页面上的一些部分

我通过jquery

调用URL
var url = '/articles.js

$.get(url, function(newItemData) {
  someOtherFunction(newItemData)
}

调用带有.js的URL结尾与发送AJAX请求(remote => true)不一样?我有一些其他按钮和链接通过remote =>发送ajax请求true,并且.js.erb模板随该请求自动呈现。有没有办法将URL称为ajax请求?

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但看起来你正在尝试从控制器渲染两个视图:index.js.erb文件和JSON响应。这是不可能的,因为Rails只支持一个renderredirect_tohead来电。

这意味着您需要更改JavaScript代码以发送两个请求:一个用于更新视图(呈现index.js.erb)而另一个用于返回您的JSON对象。

.js结束网址提交请求与提交AJAX请求相同。为此,您需要如上所述设置remote: true,或者在JavaScript代码($.ajax()中)构建一个AJAX请求(如果您使用的是jQuery)。

您也可以考虑查看Layouts and Rendering in Rails

希望有所帮助!