2

我收到此错误:

/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

我究竟做错了什么?

4

1 回答 1

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 隐含地是一个哈希,因此您不需要花括号{} 最新的 arg对象。

例如,调用这样的方法:

permit(1,2,3, :some => :var, :of => :a, :ruby => :hash)

与做的事情完全相同:

permit(1,2,3, { :some => :var, :of => :a, :ruby => :hash })

但是,如果散列首先没有花括号{和,则以不同的顺序传递参数会破坏解析器}

于 2013-08-16T18:00:40.960 回答