【问题标题】:Passing variable to Javascript doesn't work in Rails 4.2将变量传递给 Javascript 在 Rails 4.2 中不起作用
【发布时间】:2015-03-12 00:47:14
【问题描述】:

我刚刚创建了一个简单的 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); 时,我得到"&lt;%= @s3_direct_post.url %&gt;" 而不是真正的价值。

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

我确认@s3_direct_post.url 在控制台中返回了一些东西。

【问题讨论】:

  • 一般来说,&lt;%= @s3_direct_post.url %&gt; 替换只发生在 ERB 文件中。这是一件好事 - 否则您需要确保使用该 JavaScript 文件的每个页面都存在 @s3_direct_post_url,如果您正在缩小,那就有点问题了。将数据从服务器获取到 JavaScript 的更好方法是向服务器发出 AJAX 请求。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多