Ho bisogno di passare i parametri tramite javascript al server. Al momento, li passo in javascript in questo modo:Rails: passare Params tramite Ajax
sendParams("<%= params[:q].to_json %>");
E poi rimandarli indietro in questo modo:
function sendParams(q){
$.ajax({
url: '/mymodel/myaction',
type: 'post',
data: {'q':q},
contentType: 'json'
});
}
Nel mio controller, cerco di utilizzare loro come avrei qualsiasi altro params:
MyModel.where(params[:q])
Ma i params stanno tornando vuoto, anche se firebug mostra questo nella scheda POST:
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
Qualche idea sul perché questa informazione non viene elaborata dalla clausola where? Cosa posso fare per rendere nuovamente leggibili i params Rails?
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:
Il problema è apparentemente derivante da contentType
. Quando lo rimuovo, allora q
viene inviato come parametro Rails. Purtroppo, q
è ancora in JSON, causando l'errore:
undefined method `with_indifferent_access' for #<String:0x686d0a8>
Come posso convertire JSON per un hash params?
È possibile visualizzare la richiesta ei parametri registrati nel file development.log. Presumo che sia un dev env. – manoj
Buona presa. "q" non appare affatto nei parametri. Suppongo che dovrebbe, anche se è nei dati del post? – nullnullnull