【问题标题】:Rails controller variable (@s3_direct_post) into Application.js.erb?将 Rails 控制器变量 (@s3_direct_post) 放入 Application.js.erb?
【发布时间】:2014-09-05 03:46:07
【问题描述】:

我试图从我的控制器中获取一个名为 @s3_direct_post 的变量到 Application.js.erb;这是我的控制器操作:

def new
  unix_ts = Time.now().to_i.to_s
  @s3_direct_post = S3_BUCKET.presigned_post(key: "#{unix_ts}_${filename}",
                                             success_action_status: 201,
                                             acl: :public_read)
  @video = Video.new({title: "Title with hashtags"})
end

Application.js.erb 有两行引用@s3_direct_post:

url: '<%= @s3_direct_post.url %>',

formData: '<%= @s3_direct_post.fields.to_json.html_safe %>'

但是 erb 没有处理这些。我收到 400 Bad Request 错误,并显示以下请求的 URL 消息:

http://subdomain.mysite.com:3000/videos/%3C%=%20@s3_direct_post.url%20%%3E

关于如何将此值正确传输到 Application.js.erb 以便填充实例变量的值的任何建议?

附:如果我从每个 erb 字符串中删除引号,我会收到错误消息,指出方法 'url' 不存在,因为 @s3_direct_post 为空。

【问题讨论】:

    标签: javascript ruby-on-rails ruby ruby-on-rails-3 erb


    【解决方案1】:

    您可以在new.html.erb 中使用hidden_field_tag,如下所示:

    hidden_field_tag 's3_direct_post_url', '#{@s3_direct_post.url}'
    

    然后使用 jquery 从 application.html.erb 中获取该值,如下所示:

    $(document).ready(function(){
      var url = $('#s3_direct_post_url').val();
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 2018-04-13
      • 1970-01-01
      • 2011-04-16
      • 2020-05-24
      • 1970-01-01
      相关资源
      最近更新 更多