Muszę przekazać params przez javascript z powrotem na serwer. W tej chwili mogę przekazać je w javascript tak:Szyny: Przekaż paramy przez Ajaxa
sendParams("<%= params[:q].to_json %>");
a następnie wysłać je z powrotem tak:
function sendParams(q){
$.ajax({
url: '/mymodel/myaction',
type: 'post',
data: {'q':q},
contentType: 'json'
});
}
W moim kontrolera, staram się wykorzystać je jak bym innych params:
MyModel.where(params[:q])
Ale params wracają puste, choć Firebug pokazuje to w zakładce 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
Każdy pomysł, dlaczego ta informacja nie jest przetwarzana przez klauzulę where? Co mogę zrobić, aby ponownie ustawić szyki parametrów do odczytu?
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:
Problemem jest podobno wynikające z contentType
. Po usunięciu go, q
jest wysyłany jako parametr Rails. Niestety, q
jest nadal w JSON, w wyniku błędu:
undefined method `with_indifferent_access' for #<String:0x686d0a8>
Jak mogę konwertować JSON do mieszania params?
Czy można wyświetlić żądanie i parametry zarejestrowane w pliku development.log. Zakładam, że jest to dev env. – manoj
Dobry połów. "q" w ogóle nie pojawia się w parametrach. Zakładam, że powinno, nawet jeśli jest w danych postu? – nullnullnull