我需要将params通过javascript传递回服务器。目前,我将它们传递到JavaScript像这样:Rails:通过Ajax传递参数
sendParams("<%= params[:q].to_json %>");
然后送他们回到这样的:
function sendParams(q){
$.ajax({
url: '/mymodel/myaction',
type: 'post',
data: {'q':q},
contentType: 'json'
});
}
在我的控制,我尝试使用它们就像我其他任何PARAMS:
MyModel.where(params[:q])
但PARAMS陆续返回空,即使萤火显示了这个在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
任何想法为什么这些信息没有得到处理的where子句?我能做些什么来使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"}
更新2:
的问题显然是从contentType
词干。当我删除它时,q
作为Rails参数发送。不幸的是,q
仍是JSON,导致错误:
undefined method `with_indifferent_access' for #<String:0x686d0a8>
我如何转换JSON到params散列,?
你可以显示请求和在development.log中记录的参数吗?我认为这是一个开发环境。 – manoj 2013-02-13 05:04:54
好的。 “q”没有出现在参数中。我假设它应该,即使它在后数据? – nullnullnull 2013-02-13 05:09:44