将变量传递给 Javascript 在 Rails 4.2 中不起作用

Passing variable to Javascript doesn't work in Rails 4.2

我刚刚创建了一个简单的 Rails 4.2 应用程序来将文件上传到 S3。我正在尝试关注这篇文章 https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails#submitting-and-rendering-the-images,它看起来像在 javascript <%= @variable %> 中被解析为字符串。

我试过了。

这是我在 /users/new

  # GET /users/new
  def new
    @s3_direct_post = S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}/${filename}", success_action_status: 201, acl: :public_read)
    @user = User.new
  end

这就是我在 application.js

中尝试的方法
window.vaz = <%= @s3_direct_post.url %>;

但是当我执行 console.log(window.vaz); 时,我得到 "<%= @s3_direct_post.url %>" 而不是实际值。

我也试过 gon,但 gon 在 Rails 4.2

中有很多问题

我在控制台中验证了 @s3_direct_post.url returns 的内容。

将 .erb 扩展名添加到 application.js 文件 (application.js.erb)。 <%= => 是 erb 语法,您需要先将其作为 erb 文件处理,以便 <%= @s3_direct_post.url %> 被评估为 ruby 代码。

http://guides.rubyonrails.org/asset_pipeline.html#preprocessing