Skydrive重命名文件夹

Neh*_*eha 5 ruby-on-rails-4 onedrive

我在我的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
Run Code Online (Sandbox Code Playgroud)

但我收到http_error_400:错误请求错误.我正进入(状态

{"utf8"=>"?",
 "authenticity_token"=>"BAYGFcb5/74c7RV5NH1u4DCAT1MqLvLCkp9F3Q/Fav+B2wdab4aE5LBJAVr90MMu0GbfFwHTuLyncFRWtGyYTA==",
 "rename_field"=>"weqweqwe",
 "folder_id"=>"folder.cecb8eb83d90dbeb.CECB8EB83D90DBEB!106",
 "commit"=>"Rename Folder"}
Run Code Online (Sandbox Code Playgroud)

在我的参数.

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

当我添加puts时,我能够获得所有值.

Ray*_*Gan 0

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

"#{params[:folder_id]}"and"#{params[:rename_field]}"是不必要的方式,只是说params[:folder_id]and 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