2015-07-10 11 views
5

Sto usando la gemma di Skydrive nella mia applicazione di rotaie.Skydrive rinomina cartella

Per rinominare la cartella che avevo scritto

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 

Ma sto http_error_400: Bad Request errore. Mi sto prendendo

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

nei miei parametri.

Alcuni possono aiutare? Alla ricerca di una risposta attingendo da fonti credibili e/o ufficiali.

Sono in grado di ottenere tutti i valori quando aggiungo puts.

risposta

0

L'errore HTTP 400 indica che il server non è in grado di comprendere la richiesta HTTP: http://pcsupport.about.com/od/findbyerrormessage/a/400error.htm.

"#{params[:folder_id]}" e "#{params[:rename_field]}" sono modi non necessari per dire solo params[:folder_id] e params[:rename_field], che sono già stringhe.

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

La soluzione dovrebbe essere:

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

Per riferimento: 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

Codice sorgente:

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

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

+0

Changed skydrive_object = client.get_skydrive_object_by_id (folder_id) skydrive_object.update_skydrive_object (params [: folder_id], options = {nome: params [: rename_field]}) ma fornisce NoMethodError: metodo indefinito 'update_skydrive_object 'per # errore – Neha

+0

Controllato anche per i valori vuoti nell'opzione folderObject = client.update_skydrive_object ("# {params [: folder_id]}", options = {}) quindi restituendo Skydrive :: Error (http_error_400: Bad Request) – Neha

+0

Se si avere qualche altra opzione quindi per favore fatemelo sapere. – Neha