Rails 4强参数语法错误

时间:2013-08-16 17:31:55

标签: ruby-on-rails ruby ruby-on-rails-4

我收到了这个错误:

/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

我做错了什么?

1 个答案:

答案 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会破坏解析器。