【发布时间】:2013-02-13 04:56:20
【问题描述】:
我需要通过 javascript 将参数传递回服务器。目前,我将它们传递给 javascript,如下所示:
sendParams("<%= params[:q].to_json %>");
然后像这样将它们发送回去:
function sendParams(q){
$.ajax({
url: '/mymodel/myaction',
type: 'post',
data: {'q':q},
contentType: 'json'
});
}
在我的控制器中,我尝试像使用任何其他参数一样使用它们:
MyModel.where(params[:q])
但参数返回为空,即使萤火虫在 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 再次可读?
更新:
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 转换为参数哈希?
【问题讨论】:
-
能否显示在 development.log 中记录的请求和参数。我认为这是一个开发环境。
-
好收获。 “q”根本没有出现在参数中。我假设它应该,即使它在帖子数据中?
标签: ruby-on-rails ajax json params