2014-09-05 66 views
0

我试图从我的控制器中获取一个名为@ s3_direct_post的变量到Application.js.erb;这里是我的控制器操作:Rails控制器变量(@ 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 %>' 

但这些都没有被再培训局处理。我得到一个400错误请求错误与下面的请求的URL消息:

http://subdomain.mysite.com:3000/videos/%3C%=%[email protected]_direct_post.url%20%%3E 

如何因此它与实例变量的值填充此值正确地转移到Application.js.erb有什么建议?

P.S.如果我从这些erb字符串中删除引号,则会收到错误消息,指出方法'url'不存在,因为@ s3_direct_post为空。

回答

0

可以在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(); 
})