Ich muss Params über Javascript zurück an den Server übergeben. Im Moment ich sie in Javascript übergeben, wie so:Schienen: Pass-Params durch Ajax
sendParams("<%= params[:q].to_json %>");
Und sie dann so zurückschicken:
function sendParams(q){
$.ajax({
url: '/mymodel/myaction',
type: 'post',
data: {'q':q},
contentType: 'json'
});
}
In meinem Controller, ich versuche, sie zu benutzen, wie ich jedes andere params:
MyModel.where(params[:q])
Aber die params kommen leer zurück, obwohl firebug dies zeigt sich in der POST-Register:
q=%7B%26quot%3Bc%26quot%3B%3A%7B%26quot%3B0%26quot%3B%3A%7B%26quot%3Ba%26quot%3B%3A%7B%26quot%3B0%26quot%3B%3A%7B%26quot%3Bname%26quot%3B%3A%26quot%3Btitle%26quot%3B%7D%7D%2C%26quot%3Bp%26quot%3B%3A%26quot%3Bcont%26quot%3B%2C%26quot%3Bv%26quot%3B%3A%7B%26quot%3B0%26quot%3B%3A%7B%26quot%3Bvalue%26quot%3B%3A%26quot%3B2%26quot%3B%7D%7D%7D%7D%2C%26quot%3Bs%26quot%3B%3A%7B%26quot%3B0%26quot%3B%3A%7B%26quot%3Bname%26quot%3B%3A%26quot%3Bvotes_popularity%26quot%3B%2C%26quot%3Bdir%26quot%3B%3A%26quot%3Bdesc%26quot%3B%7D%7D%7D
Eine Idee, warum diese Information nicht von der Where-Klausel verarbeitet wird? Was kann ich tun, um die params Rails wieder lesbar zu machen?
UPDATE:
Started POST "/publications/search?scroll=active&page=6" for 127.0.0.1 at 2013-0
2-12 22:55:24 -0600
Processing by PublicationsController#index as */*
Parameters: {"scroll"=>"active", "page"=>"6"}
UPDATE 2:
Das Problem offenbar von contentType
stammende. Wenn ich es entferne, wird q
als Rails-Parameter gesendet. Leider ist q
noch in JSON, in dem Fehler führt:
undefined method `with_indifferent_access' for #<String:0x686d0a8>
Wie kann ich JSON zu einem params-Hash-Format konvertieren?
Können Sie die Anforderung und die in der Datei development.log protokollierten Parameter anzeigen. Ich nehme an, es ist ein dev env. – manoj
Guter Fang. "q" erscheint in den Parametern überhaupt nicht. Ich nehme an, es sollte, obwohl es in den Postdaten ist? – nullnullnull