gpt4 book ai didi

ruby-on-rails - Rails JS 响应,同时呈现状态和模板?

转载 作者:行者123 更新时间:2023-12-04 20:18:21 26 4
gpt4 key购买 nike

在我当前的 rails 应用程序中,我使用的是 ajax uploader需要你用 json 响应的库 {success:true}表示文件上传成功。

在我的应用程序中,文件是图像,上传后我想将其添加到页面中。通常我会做这样的事情:

respond_to do |format|
format.html { redirect_to @resource, :notice => 'Created.' }
format.js
end

在上面的示例中,我的 JS 响应将呈现适当的模板,例如 create.js.erb这可能会说类似...
$('#resources').append('<%= escape_javascript( render '@resource' ) %>');

这就是我过去做 Ajax 评论等事情的方式。现在,为了让上传器工作,我的 respond_to块目前这样做:
format.js { render :json => { :success => true } }

这使上传器工作,但似乎阻止我像通常使用 Ajax 响应那样向页面添加呈现的部分。

我的问题是,有没有办法同时实现这两个目标? 如果没有,您将如何在成功创建渲染对象后填充页面?

最佳答案

您不能直接从 Controller 或使用 View 模板执行这两项操作。看起来 ajax 上传器期望可以解析为 JSON 的响应,因此使用模板添加任何其他响应(这意味着不执行 format.js { render :json => { :success => true }} )不会将 JSON 作为响应正文发回。

看着source对于插件,可以看到可以定义一个方法来运行onComplete这将为您提供 JSON 响应。

这是未经测试的,但应该让你接近。所以你如果像这样扩展你的 JSON 响应

format.js do
partial = render_to_string @resource
render :json => { :success => true, :partial => partial }
end

然后在设置 ajax 上传器时在页面上的 javascript 中添加回调
var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader'),
action: '/upload',
onComplete: function(id, fileName, responseJSON) {
$('#resources').append(responseJSON.partial);
}
});

关于ruby-on-rails - Rails JS 响应,同时呈现状态和模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9594429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com