繁体   English   中英

javascript中的rails,erb:如何删除

[英]rails, erb in javascript: how to remove it

我已经在application.erb.html的标记中创建了一个javascript。
它管理文件的异步上传(实际上使用plupload,但这与问题无关)。
初始化上载器对象的javascript代码如下:

$(function() {

var uploader = new plupload.Uploader(
    {
        browse_button: 'plupload_browse',
        url: <%= upload_tmp_path(:format => :json) %>'
    });

//...

}

正如您在url行中看到的那样,由于我位于erb页面中,因此我依靠<%=%>标记来传递脚本上传URL。
现在,出于模块化原因,我想将此脚本放入其特设.js文件中。
由于我不能再使用<%=%>标记,因此最好的选择是向此类脚本传递所需信息的最佳选择是什么?

只需将其作为自定义数据属性添加到页面上的可预测元素上,配置为Browse_button的元素似乎是可能的候选对象。

DOM

最重要的是,您将必须通过HTML将数据传递给JS。

由于JS是客户端,而Rails是服务器端,因此将数据传递到独立的JS脚本(不是由Rails直接呈现)的唯一方法是使用gon ,如apneadiving所建议的apneadiving ,或者通过设置url直接在HTML的data属性中:

#app/controllers/application_controller.rb
before_action :set_gon

private

def set_gon
    gon.push({
       upload_tmp_path: upload_tmp_url(:format => :json)
    })
end

#app/views/layouts/application.html.erb
<%= include_gon %>

这将允许您按以下方式在JS中调用网址:

#app/assets/javascripts/application.js
gon.upload_tmp_path

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM