2015-07-10 7 views
5

Я использую жемчужину Skydrive в моем приложении для рельсов.Skydrive переименовать папку

Для переименования папки я написал

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.

ответ

0

Ошибка HTTP 400 означает, что сервер не смог понять ваш HTTP-запрос: http://pcsupport.about.com/od/findbyerrormessage/a/400error.htm.

"#{params[:folder_id]}" и "#{params[:rename_field]}" - это ненужные способы просто сказать params[:folder_id] и params[:rename_field], которые уже являются строками.

Do 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

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

+0

Изменен 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 'для # error – Neha

+0

Также проверяется на наличие пустых значений в опции folderObject = client.update_skydrive_object ("# params [: folder_id]}", options = {}), тогда его предоставление Skydrive :: Error (http_error_400: Bad Request) – Neha

+0

Если вы есть любой другой вариант, пожалуйста, дайте мне знать. – Neha

Смежные вопросы