2016-07-22 79 views
2

在我的控制器的create方法,试图要求的设置和允许的参数失败:的ActionController ::参数的要求'方法返回一个字符串

params.fetch(:xyz, {}).require(:name).permit(:local) 

回报

undefined method `permit' for "EXAMPLE":String Did you mean? print 

PARAMS原本是

"utf8"=>"✓", 
"authenticity_token"=>"...", 
"xyz"=>{"name"=>"EXAMPLE", "local"=>""}, 
"commit"=>"Create xyz"} 

我甚至试图创建新的Parameters对象,但没有改变:

​​3210

有人可以点亮这个吗?我是Rails的新手,对不起。

+0

@spickermann我从html表单清理输入。 Rails教程似乎也这样做。这是错的吗? –

回答

0

正确的语法是:

params.require(:xyz).permit(:local, :name) 
+0

删除抓取给了我'ActionController :: ParameterMissing在XyzController#create'中。对不起,我是新手。 –

+0

这意味着在'params'中找不到':xyz'。你能不能展示你的整个控制器行动? – spickermann

0

我在Rails guides - Strong Parameters接过来一看,它给出了如何获得PARAMS一个很好的例子和说明。所以你的代码看起来应该是这样的:

def xyz_params 
    params.require(:xyz).permit(:name, :local) 
end 
相关问题