我收到了这个错误:
/Applications/MAMP/htdocs/clippo2/app/controllers/projects_controller.rb:31: syntax error, unexpected ',', expecting => ...:user_id => [1], :instructions, :max_duration, :active, :max... ... ^
尝试实现Rails 4强参数时从这个方法:
private
def project_params
params.require(:project).permit(:user_id => [1], :instructions, :max_duration, :active, :max_videos, :hashed_id)
end
我做错了什么?
答案 0 :(得分:4)
尝试删除=> [1]
符号后面的“:user_id
”:
params.require(:project).permit(:user_id => [1], :instructions, :etc) ^^^^^^^
params.require(:project).permit(:user_id, :instructions, :etc)
或者如果您想保留它,请使用{ }
:
params.require(:project).permit({:user_id => [1]}, :instructions, :etc)
或者使用ruby语法分析器对您有利(请参阅下面的更多信息):
params.require(:project).permit(:instructions, :etc, :user_id => [1])
这实际上是一个红宝石功能。赋予方法的最新arg隐含为Hash,因此您不需要在最新的arg 对象上使用大括号{
和}
。
例如,调用这样的方法:
permit(1,2,3, :some => :var, :of => :a, :ruby => :hash)
与完成相同的事情:
permit(1,2,3, { :some => :var, :of => :a, :ruby => :hash })
但是如果哈希是第一个没有大括号{
和}
的话,那么以不同的顺序传递args会破坏解析器。