我将此脚本放在底部的new.html.erb
文件中的脚本标记中:
$('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而不解释它?
答案 0 :(得分:0)
更一般地说,如何在我的javascript中加载页面后使用erb 没有被解释?
你做不到。 Javascript是客户端,ruby是服务器端。如果你想同时处理两者,你可以考虑ActionCable甚至Volt框架。但它并不适合您的用例。
正如@Pointy在评论中指出的那样,您希望从服务器获取url
。实际上你甚至不需要它,只需一次完成工作。示例:
$('div #mainPhotoDropzone').dropzone({
url: "/photos?post_id=" + $("#post_form").data('post-id'),
complete: function(data){
$('#mainPhotoDropzone').attr('style', "background-image: url('" + data.main_photo + "')");
}
})