ruby-on-rails - 对象ID和youtube视频ID与youtube_it gem相同

标签 ruby-on-rails ruby ruby-on-rails-3 youtube ruby-on-rails-3.2

我正在使用此gem将视频从我的应用上传到youtube:

https://github.com/kylejginavan/youtube_it

这是我对 token 的要求:

{:url=>"http://uploads.gdata.youtube.com/action/FormDataUpload/AIwbFATUMuFsv2GfJp4jkDXk3mkLNF6WklzOSoX05p96enTOMAj6DlnXpe1Rav-ZxZwNRrGC_7-8kStHFA2nisMb09CjdJgNBA?nexturl=http://localhost:3000/es/cvs/5152d31aa61654e56b000001/save_video?cv_id=5152d31aa61654e56b000001", :token=>"AIwbFAQv5ZE9-TBWTNNJi4Ng6_tvoLaxW0JVDCU7TE0rxiT_2CUFw-eZR5kuZr_0tkWBTtpWVu4I-OcfMsfnusqHYQNwq1EsVaCuGDnbqV07OwngagOQYXfzgnxwNzDJ5H1ESkRWKjtOVGGP1-ETDhDdB45-ZyYxlVQVKbitcrONJz1NKI4adqhVrPhmTJaKyjysb5mtWlNYoA1DGesmEwg6UG4y9Nwg1ekVYpi_fB8lvFE5CkchG1AhDkei6yq0wQSyxJVBbF3mhgFuh8ZSRvCuxRvKH7tTmx0ew3P9dmv61S5MQHs5_cwY-pGq4rce4xjVKBB68j5GoT6RaJxKbhLXrV6_pQwUACG40tTWxWhVHLZDneAlzDwnveFBJRE41xCI0G_sbkIJ5703Y1dLorXAGcjNxMFe3-MJ-zbPXWpyZeK7TD2s0lnbc6cdOPje8DGFAFmc6P_7TD6RzTepoBkOOhAokGKpAYkfxacBD77aaExHCzFHde-9jFNZQ2QelPL2YXwyMA8lcX81c3zItut1NKp1soXxuGDNkBPOpu2OzYuGTSBS9PPyvFfqUMHg5X2KDADn2uYNU25nDMIKJlG4VeCfntEbr1J0m1HpcFR3_8LK9hlehuHjqmY_7e8lIbSRJHmEEhw2bQG1aIh7gClZDVVfeJnA52r8Sb_7O4yWtkbii6

当我上传视频时,我在日志中得到了这些参数:
{"cv_id"=>"5152d31aa61654e56b000001", "status"=>"200", "id"=>"5152d31aa61654e56b000001", "action"=>"save_video", "controller"=>"cvs", "locale"=>"es"}

cv_id ID 是相同的ID,这是不正确的。

但是在url中,我可以看到 youtube视频ID ,这是url:
http://localhost:3000/es/cvs/5152d31aa61654e56b000001/save_video?cv_id=5152d31aa61654e56b000001&status=200&id=GJUIN83LrdQ

正确的youtube视频ID为 GJUIN83LrdQ

这些是我使用此资源的路线:
Myapp::Application.routes.draw do
  #
  #
  resources :cvs do
   member do
    get :upload, :save_video
   end
  end
  #
  #
end

我使用的参数很强gem,我不知道这是否是问题。

我该如何解决这个问题?

谢谢!

最佳答案

您的路线和您希望看到的数据之间不匹配。您的路线在路径中指定了:id参数,该参数优先于查询字符串中的id参数。由于路径中的id和查询字符串中的cv_id相同(5152d31aa61654e56b000001),因此您看到的这两个参数键的值都是相同的。

根据您的选择,考虑从为nexturl提供的查询字符串中省略id并将其放在:id的路径参数中:

http://localhost:3000/es/cvs/GJUIN83LrdQ/save_video?cv_id=5152d31aa61654e56b000001

或者,重命名您的路线,以便它指定:cv_id并从查询字符串中省略cv_id:
# route:
(/:locale)/cvs/:cv_id/save_video(.:format) cvs#save_video

http://localhost:3000/es/cvs/5152d31aa61654e56b000001/save_video?id=GJUIN83LrdQ

关于ruby-on-rails - 对象ID和youtube视频ID与youtube_it gem相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667475/

相关文章:

ruby - RSpec 期望 raise_error 的最佳实践

ruby - 如何漂亮地打印到变量而不是 STDOUT?

ruby-on-rails - Rails 3 初始化顺序

ruby-on-rails-3 - 在 Rails 3 中编写自定义验证器

ruby-on-rails - Rails CanCan 条件哈希不起作用

ruby-on-rails - 如何在 Rails 4.0 中仅继承 ActiveRecord 模型的连接

ruby-on-rails - 如何使用 Rails #order 方法避免 SQL 注入(inject)

ruby-on-rails - unicorn 吃内存

ruby-on-rails - Scala(任何框架)中是否有像 Rails 中的脚手架这样的 CRUD 生成器实用程序?

ruby-on-rails - Ruby 应用程序的多个环境