0
我有一个new.html.erb
文件这个脚本,在底部,在脚本标签:事件触发后,使用Ruby变量
$('div #mainPhotoDropzone').dropzone({
url: "/photos?post_id=" + $("#post_form").data('post-id'),
complete: function(file){
var url = "<%= @post.photos.first.file.path %>";
$.get(url, function(data){
$('#mainPhotoDropzone').attr('style', "background-image: url('" + data.main_photo + "')");
})
}
然而,@post.photos.first.file.path
还不能在页面加载存在,所以我有一个错误。由于我在complete
事件(并在此特定时间存在)上调用此变量,我应该将此脚本放在另一个文件中,并要求它在我的new.html.erb
中才能生效?我必须将它放在js.erb
文件中吗?
更一般地说,如何在我的javascript页面加载后使用erb而不解释它?
在服务器上评估ruby的东西,而JavaScript在客户端上运行。如果您想在发生客户端事件时执行涉及服务器的事情,则必须向服务器发出HTTP请求(ajax)。 – Pointy
感谢您的回答@Pointy。我已经在做AJAX请求了:dropzone通过Ajax将图像发送到服务器,并且我想在dropzone的完整事件中使用此图像。由于ruby是在页面加载时评估的,我怎样才能得到一个包含这个erb的文件,并在完成事件发生时进行评估? –
您的服务器端代码需要以某种方式将该URL作为响应的一部分发回。 (该“完成”处理程序的'file'参数。)ajax操作返回什么? – Pointy