javascript - 使用 JavaScript 脚本作为函数来更新资源参数?

标签 javascript ruby-on-rails ruby json youtube-api

当我创建新的视频资源时,我想使用 JavaScript 脚本中的数据更新 length 参数。这些是我的视频资源中的所有参数:

 create_table "videos", force: true do |t|
    t.string   "url"
    t.text     "name"
    t.integer  "playcount"
    t.integer  "length"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "stream_id"
    t.string   "video_id"
    t.string   "vidstring"
  end

vidstring 参数是在模型的方法中创建的:

vidstring = "http://gdata.youtube.com/feeds/api/videos/" + video_id + "?v=2&alt=jsonc&callback=youtubeFeedCallback&prettyprint=true"

这是我需要用来获取数据的代码。该代码应该存储在哪里?

<script type="text/javascript">
    function youtubeFeedCallback(json){
    document.write(json["data"]["title"]);
    }

</script>

<script type="text/javascript" src= <%= video.vidstring %> >

</script>

当我创建一个脚本时,如何从该脚本中提取 (json["data"]["title"]) 并将其存储在 "length" 参数中新的视频资源?

最佳答案

提示:提出更具描述性的问题。不管怎样,youtube 似乎用原始 json 回答(例如: http://gdata.youtube.com/feeds/api/videos/Dy9rGCS4ZHw?v=2&alt=jsonc )。您可能需要 data[duration]。

正如 @Puhlze 所说,最好通过回调在服务器端执行此操作。有a ruby gem for consuming the YT api但我认为对于这个简单的任务来说这就足够了:

require 'open-uri'
class Video < ActiveRecord::Base
  # more stuff omitted
  before_save :get_youtube_video_duration

  def get_yotube_video_duration
    # duration are seconds it seems
    duration = JSON.parse(
      open("http://gdata.youtube.com/feeds/api/videos/#{self.video_id}?v=2&alt=jsonc").read
    )['data']['duration']
    self.length = duration
  end
  #...

检查rails callbacks .

关于javascript - 使用 JavaScript 脚本作为函数来更新资源参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23703919/

相关文章:

javascript - Rhino 可以解析 HTML 文件吗

javascript - PHP - 获取数据时 Ajax 自动刷新页面

javascript - 以特定网格布局显示图像 : ejs

ruby-on-rails - 如何在 Heroku 上安装 libmagic?

ruby - 如何从 Google bigquery(google-cloud-ruby gem) 的 View 表(具有 resource_full)中获取数据

javascript瓦片 map 碰撞优化

ruby-on-rails - rails : Manipulating params before saving an update - wrong approach?

ruby-on-rails - 为什么我必须在使用客户验证器后重新加载 rspec 中的记录?

ruby - 更改 Date 对象的月份而不返回新日期

ruby-on-rails - Bundler 找不到 gem "mime-types"的兼容版本