【问题标题】:Skydrive rename folderSkydrive 重命名文件夹
【发布时间】:2015-07-10 11:53:40
【问题描述】:

我在我的 rails 应用程序中使用 Skydrive gem。

为了重命名我写的文件夹

def renaming_folder
  client = Skydrive::Client.new(@@access_token)
  folder_id = params[:folder_id]
  # (url, {:body => options})
  # options = {name: "#{params[:rename_field]}"}
  puts "-------------------..."
  puts "#{params[:folder_id]}"
  client.get_skydrive_object_by_id(folder_id)

  # I believe issue comes from this line:
  folderObject = client.update_skydrive_object("#{params[:folder_id]}", options={name: "#{params[:rename_field]}"})

  redirect_to drive_show_path
end

但我收到 http_error_400: Bad Request 错误。我得到了

{"utf8"=>"✓",
 "authenticity_token"=>"BAYGFcb5/74c7RV5NH1u4DCAT1MqLvLCkp9F3Q/Fav+B2wdab4aE5LBJAVr90MMu0GbfFwHTuLyncFRWtGyYTA==",
 "rename_field"=>"weqweqwe",
 "folder_id"=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!106",
 "commit"=>"Rename Folder"}

在我的参数中。

有人可以帮忙吗?寻找可靠和/或官方来源的答案。

当我添加 puts 时,我能够得到所有的值。

【问题讨论】:

    标签: ruby-on-rails-4 onedrive


    【解决方案1】:

    HTTP 400 错误表示服务器无法理解您的 HTTP 请求:http://pcsupport.about.com/od/findbyerrormessage/a/400error.htm

    "#{params[:folder_id]}""#{params[:rename_field]}" 是不必要的方式,只是说 params[:folder_id]params[:rename_field],它们已经是字符串。

    client.get_skydrive_object_by_id(folder_id).update(options={name: params[:rename_field]

    您的解决方案应该是:

    skydrive_folder = client.get_skydrive_object_by_id(folder_id) skydrive_folder.update(options = {name: params[:rename_field]})

    供参考:http://www.rubydoc.info/gems/skydrive/1.2.0/Skydrive/Operations#update_skydrive_object-instance_method http://www.rubydoc.info/gems/skydrive/Skydrive/Folder#update-instance_method

    源代码:

    第 119 行:https://github.com/ronyv89/skydrive/blob/master/lib/skydrive/operations.rb

    第 44 行:https://github.com/ronyv89/skydrive/blob/master/lib/skydrive/client.rb

    【讨论】:

    • Changed skydrive_object = client.get_skydrive_object_by_id(folder_id) skydrive_object.update_skydrive_object(params[:folder_id], options={name: params[:rename_field]}) 但它给出了 NoMethodError: undefined method `update_skydrive_object' for #<:folder:0x007fe73e729f48> 错误
    • 还检查了选项 folderObject = client.update_skydrive_object("#{params[:folder_id]}", options={}) 中的空白值,然后给出 Skydrive::Error (http_error_400: Bad Request)
    • 如果您有其他选择,请告诉我。
    • client.get_skydrive_object_by_id(folder_id) 是什么类? client.get_skydrive_object_by_id(folder_id).class 说什么?
    • client.get_skydrive_object_by_id(folder_id).class的结果是=> Skydrive::Folder
    猜你喜欢
    • 2014-09-09
    • 2018-08-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 2016-01-25
    相关资源
    最近更新 更多