的文檔(http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters)在強大的參數使用的例子是:的Rails 4.0.0強大的參數似乎沒有工作,因爲記錄
params.require(:person).permit(:name, :age)
但是,這並不工作,因爲需要()返回可以調用參數的值,而不是另一個可以調用permit()的參數對象。
$ rails console
1.9.3p286 :005 > params = ActionController::Parameters.new(person: 1, name: "Joe", age: 30)
=> {"person"=>1, "name"=>"Joe", "age"=>30}
1.9.3p286 :006 > params.require(:person).permit(:name, :age)
NoMethodError: undefined method `permit' for 1:Fixnum
from (irb):6
from /Users/jeremyburton/.rvm/gems/ruby-1.9.3-p286/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
from /Users/jeremyburton/.rvm/gems/ruby-1.9.3-p286/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
from /Users/jeremyburton/.rvm/gems/ruby-1.9.3-p286/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
此外,要求只能取1個參數似乎很奇怪。看來你應該能夠做到:
params.require(:a, :b).permit(:c, :d)
然而,你必須做的是:
params.require(:a)
params.require(:b)
params.permit(:a, :b, :c, :d)
這似乎不是很乾 - 如果需要的參數,然後它是由定義允許,當然。
我錯過了什麼嗎?
謝謝。這是有道理的。 –