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])

これは実際には ruby​​ の機能です。メソッドに指定された最新の引数は暗黙的にハッシュであるため、最新の引数オブ​​ジェクト{に中括弧は必要ありません。}

たとえば、次のようなメソッドを呼び出します。

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 に答える