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

时间:2015-03-12 00:47:15

标签: javascript ruby-on-rails heroku amazon-s3

我刚刚创建了一个简单的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在控制台中返回了一些内容。

1 个答案:

答案 0 :(得分:0)

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

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