Denetleyicimin update
eyleminin en üstünde bir binding.pry
koydum. Bu mola noktasında, params
karma değerini incelemek için params[:foo_bar]
'u ekledim. İşte ne alıyorum: Neden Güçlü Params izin veriliyor: false
<ActionController::Parameters {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"123==", "foobar"=><ActionController::Parameters {"barbazz_attributes"=>{"start_date"=>"08/27/2016", "end_date"=>"08/29/2016", "id"=>"89"}, "bazz_id"=>"3", "abc_id"=>"330", "bazzbazz_attributes"=>{"0"=>{"_destroy"=>"1", "city_id"=>"1669", "id"=>"26"}, "1"=>{"city_id"=>"1681", "id"=>"27"}, "2"=>{"city_id"=>"1672"}}} permitted: false>, "cat_id"=>["1", "1", "1"], "commit"=>"Update FooBar", "controller"=>"foo_bars", "action"=>"update", "id"=>"52"} permitted: false>
Sanırım bazı özelliklerini beyaz listeye yoktu çünkü
permitted: false
var üstlendi. Özniteliklere baktım ve bana her şeyi beyaz listeye ekledim.
Eğer herhangi bir fark yaratırsanız Rails 5 kullanıyorum.
Soru: Güçlü parametreler params: false
dönüyor nedenini öğrenmek için kolay bir yoldur ne.
Paramize izin verdiğiniz yeri gösterir misiniz? Genellikle bu bir isme sahip bir yöntemdir: diyelim: 'foobar_params' ve bu metot aracılığıyla izin verilen paramize erişirsiniz ve direkt olarak 'params' den değil. Muhtemelen izinli olarak yanlış görüyorsunuz. Kolay yolu, kaynak kodunu okumaktır: https://github.com/rails/strong_parameters/blob/master/lib/action_controller/parameters.rb#L42, 'permit 'aramadıkça' permitted = false' varsayılan değerdir! 'herkese izin vermek, ancak bu güçlü parametrelerin amacını yener. – Leito