2016-11-10 5 views
0

Ich habe eine Methode, die ich von einem Controller ausführen möchte, sollte dies durch Klicken auf eine Schaltfläche erfolgen, das Problem, das ich habe, ist, wenn ich auf die bestimmte Linie oder Element klicken Ich werde auf die Ansicht dieses Artikels umgeleitet. HierAufruf Methode ohne Eröffnung show view - Schienen

ist die Route, die ich geschaffen habe: patch '/withdraw/:id', to: 'payments#withdraw', as: :withdraw

Dies ist die link_to Linie: <%= link_to 'Withdraw', withdraw_path(pay), method: :post %>

Und das ist die Methode, die tatsächlich vorhandenen Attribute Aktualisierung:

def withdraw 
@payment = Payment.find(params[:id]) 
@payment.withdrawn = true 
@payment.amount_interest = @payment.amount * 1.1 
@payment.save 
end 

Was muss ich ändern, um das gewünschte Ergebnis zu erhalten? Jede Hilfe wird sehr geschätzt.

Antwort

0

Fügen Sie remote: true zu der Verknüpfung hinzu.

<%= link_to 'Withdraw', withdraw_path(pay), method: :patch, remote: true %> 

und fügen head :ok am Ende der Aktion:

def withdraw 
    .. 
    head :ok 
end 
+0

Muß ich meine Route bearbeiten, wie ich die folgende Störung erhalten: 'Action :: RoutingError (Keine Route treffer [POST] "/ withdraw/3") ' –

+0

danke für die Antwort, wenn ich auf den '' 'zitieren' link_to' klicke, bekomme ich eine nicht endende Schleife, die versucht, den angegebenen Datensatz abzurufen: 'CACHE (0.0ms) SELECT" payments " . * FROM "Zahlungen" WHERE "Zahlungen". "ID" = $ 1 LIMIT $ 2 [["ID", 1], ["LIMIT", 1]] ' –

+0

@MorezSA Dies ist, weil Sie einen Fehler in Ihrem ersten' haben Code zurückziehen. Wahrscheinlich möchten Sie '@payment.amount_interest = @ payment.withdraw.amount * 1.1'. Jetzt gibt es endlose und sinnlose Schleife – MikDiet