2016-05-12 7 views
0

Hallo allerseits Ich habe ein Problem beim Einrichten meiner App. Es verwendet die shopify-API, und im Wesentlichen werden einige Daten über eine Ansicht abgerufen und an die Steuerung gesendet, aber ich habe Probleme, sie an eine andere Methode im Controller zu übergeben, um die API zum Speichern der Daten zu verwenden.Rails Ajax Call: JSON an separate Controller-Methode übergeben

Hier ist mein Code:

-Controller

class BuilderController < ShopifyApp::AuthenticatedController 
    def index 
    urlval = request.fullpath 
    @urlCheck = urlval.split('/').last 
    end 
    def show 
    url = request.fullpath 
    @urlID = url.split('/').last 
    @customers = ShopifyAPI::Customer.search(query: "id:"+ @urlID) 
    #need to get a way to retrieve the ajax call info here to pass into the update 
    end 
    def updateCustomer(notes) 
     @customers.each do |cus| 
     cus.note = notes 
     cus.save() 
     end 
    end 
    def new 
    notes = params[:notes] 
    updateCustomer(notes) 
    render json: notes 
    end 
end 

Ansicht

<button id="test">TEST</button> 

<script> 
var butt = document.getElementById('test'); 
butt.addEventListener("click",function(){ 
    $.ajax({ 
    url: "/builder/new", 
    type: "GET", 
    data: { 
      "notes": [ 
       "test", 
       "test2" 
      ] 
     }, 
    success: function(data,text,xhr) { 
     console.log(text); 
     console.log(xhr); 
     console.log(data); 
     alert('successfully'); 
    }, 
    error: function(data,error){ 
     console.log(data); 
     console.log(error); 
     alert("help"); 
    } 
    }); 
}); 
</script> 

Antwort

0

Anstatt eine vollständig separate Methode haben Sie in die respond_to Methode geschaut? http://api.rubyonrails.org/classes/ActionController/MimeResponds.html#method-i-respond_to

Sie tun könnte (HTML Annahme, daß die primäre Forderung Typ, ändern, wenn es nicht ist):

def index 
    respond_to do |format| 
    format.html { actions } 
    format.json { actions } 
    end 
end 

Dies ist die Methode, die wir unterschiedliche Anforderungstypen innerhalb einer Aktion zur Aufnahme verwenden. Bitte lassen Sie mich wissen, wenn ich Ihre Frage falsch interpretiert habe.

+0

die Aktionen Umsetzung meiner Updatecustomer Methode zu sein? – dpat

0

können Sie diese

update_all (Updates) public Updates alle Datensätze mit Angaben gemacht verwenden, wenn sie eine Reihe von Bedingungen geliefert, Grenzen und Ordnung entsprechen auch geliefert werden kann. Diese Methode erstellt eine einzelne SQL UPDATE-Anweisung und sendet es direkt an die Datenbank. Es instanziiert die beteiligten Modelle nicht und es löst keine Active Record Callbacks oder Validierungen aus. http://apidock.com/rails/v4.0.2/ActiveRecord/Relation/update_all

def new 
notes = params[:notes] 
@customer.update_all({note: notes}) 

respond_to do |format| 
    format.html {} 
    format.json { json: @customer.json } 
end 
end 
+0

Ich bin ein wenig verwirrt, warum ich eine SQL-Anweisung brauchen würde, wenn ich überhaupt keine Datenbank dafür verwende? Vielleicht bin ich nur ein Missverständnis – dpat