2010-12-29 2 views
1

in meiner Rails 3 App zu aktualisieren, ich bin mit jQuery veröffentlichen Folgendes:Rails - Entsendung einen Boolean (wahr oder falsch) und die DB in der Steuerung

http://0.0.0.0:3000/topics/read_updater?&topic_id=101&read=true 

In meinem Controller:

def read_updater 
     current_user.topics.where(:topic_id => params[:topic_id]).update_all(:read => params[:read]) 

    render :json => {:status => 'success' } 
    end 

params [: topic_id] funktioniert gut, aber params [: read] fügt leere Werte in die DB ein, obwohl jQuery entweder ein true oder ein false angibt. Ideen? Ich möchte Schienen die DB mit entweder wahr oder falsch aktualisieren.

Dank

+0

meinst du 'params [: topic_id]' funktioniert? – zsalzbank

+0

Entschuldigung ja ich werde updaten – AnApprentice

Antwort

2

Vielleicht update_all wird das Parsen nicht übergebenen String? params[:read] ist ein String:

params[:read] 
=> "true" 
# or 
=> "false" 

Vielleicht versucht sie einen String in dieser Spalte zu speichern und das ist, warum Sie Probleme haben.

diese Zeile Versuchen:

current_user.topics.where(:topic_id => params[:topic_id]).update_all(:read => true) 

Und sehen, ob es funktioniert. Wenn ja, dann ersetzen Sie :read => params[:read] durch etwas wie :read => params[:read] == 'true'.

Ich hoffe auch, dass Sie überprüft haben, wie params Hash in diesem Controller aussieht. Wenn nicht, setzen Sie einfach:

logger.debug params.inspect 

am Anfang des read_updater Verfahren und Protokolle überprüfen, ob alles in Ordnung ist.

Verwandte Themen