0
通常,当我做一个POST或Web应用程序获取HTTP调用,哈希,请直接从params哈希表:参数无法通过PARAMS哈希
@user = User.find(params[:id])
不过,我已经派内容类型“应用/ JSON”从Android应用,像这样:
JSONObject holder = new JSONObject();
JSONObject userObj = new JSONObject();
userObj.put("username", params.get("name"));
userObj.put("uid", params.get("uid"));
userObj.put("image", params.get("image"));
userObj.put("provider", params.get("provider"));
holder.put("user", userObj);
query = holder.toString();
url = new URL("http://10.0.2.2:3001/users/auth/facebook/callback.json ");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
当我看着日志,是很好的被格式化的数据:
Processing by OmniauthCallbacksController#facebook as JSON
Parameters: {"user"=>{"username"=>"John Dough", "uid"=>"11111222444", ...
但是,我无法访问params哈希表像这样:
params_user # => nil
def params_user
params[:user].permit!
end
为什么我不能访问params哈希表时,它显然是可用?
如果我尝试访问它是这样的:
params.parameters['user']
它告诉我则params的参数的方法是受保护的。但这是我使用调试器时唯一看到数据的地方。
NoMethodError (protected method `parameters' called for #<ActionController::Parameters:0x007fc51d1f9e08>):
是它阻止,因为强大的参数? – emaillenin
@emaillenin没有看到我的代码:params [:user] .permit!我允许强参数 – Donato