将变量传递给 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
我刚刚创建了一个简单的 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