2014-09-05 33 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(); 
})