将变量传递给Javascript不会';t在Rails 4.2中工作

将变量传递给Javascript不会';t在Rails 4.2中工作,javascript,ruby-on-rails,heroku,amazon-s3,Javascript,Ruby On Rails,Heroku,Amazon S3,我刚刚创建了一个简单的Rails 4.2应用程序,用于将文件上载到S3。我试图理解这篇文章,它在javascript中被解析为字符串 我试过这个 这就是我在/users/new # GET /users/new def new @s3_direct_post = S3_BUCKET.presigned_post(key: "uploads/#{SecureRandom.uuid}/${filename}", success_action_status: 201, acl: :pu

我刚刚创建了一个简单的Rails 4.2应用程序,用于将文件上载到S3。我试图理解这篇文章,它在javascript中被解析为字符串

我试过这个

这就是我在
/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 %>;
window.vaz=;
但是当我执行
console.log(window.vaz)时
我得到的是
,而不是实际值

我也尝试过gon,但是gon在Rails 4.2中有很多问题


我验证了
@s3\u direct\u post.url
在控制台中返回了一些内容

将.erb扩展名添加到application.js文件(application.js.erb)
是erb语法,您需要首先将其作为erb文件处理,以便将
计算为ruby代码


一般来说,
替换只发生在ERB文件中。这是一件好事——否则,您需要确保使用该JavaScript文件的每个页面都存在
@s3\u direct\u post\u url
,如果要缩小,这会有点问题。从服务器获取数据到JavaScript的更好方法是对服务器发出AJAX请求。