2012-05-12 20 views
10

Çok adımlı bir formda çalışıyorum (Wicked gem kullanarak). Formun ilk iki adımında kullanıcı modelini düzenliyorum ve bu adımlar gayet iyi çalışıyor .. Sonra kullanıcı modeli ile HABTM ilişkisi olan "ilgi alanları" modelini deniyorum. İşte görünümüRaylar Hatası: Korunan nitelikler topluca atandı: interest_ids?

ActiveModel::MassAssignmentSecurity::Error in UserStepsController#update 

Can't mass-assign protected attributes: interest_ids 
Rails.root: /Users/nelsonkeating/rails_projects/Oreminder1 

Application Trace | Framework Trace | Full Trace 
app/controllers/user_steps_controller.rb:12:in `update' 

user_steps_controller.rb

class UserStepsController < ApplicationController 
    include Wicked::Wizard 
    steps :standard, :personal, :interests, :dates 

def show 
    @user = current_user 
    render_wizard 
end 

def update 
    @user = current_user 
    @user.attributes = params[:user] 
render_wizard @user 
end 

end 

:

<%= render layout: 'form' do |f| %> 

<% for interest in Interest.find(:all) %> 
<label class="checkbox"> 
    <%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %> 
    <%= interest.name %> 
</label> 
<% end %> 

<% end %> 

Herhangi bir fikir Ancak bu hatası alıyorum? Teşekkürler!

+1

Rails 3.2.3 veya daha yeni bir sürümdeyseniz, artık kütle atamak istediğiniz her şeyi açıkça beyaz listeye almak zorundasınız. Mesele bu olabilir miydi? Http://www.h-online.com/security/news/item/Rails-3-2-3-makes-mass-assignment-change-1498547.html sayfasına bakın. –

+0

İlgi alanlarımda modelim var: attr_accessible: name,: interest_ids – js111

+0

Kullanıcı modelinizde ayarlanmalıdır. – Mischa

cevap

21

Aşağıdaki durumlarda kullanıcı modeline bu ekleyerek bu hatanın kurtulabilirsiniz: Bu interest_ids nitelik mass assignment karşı korumalıdır ve sen yine de değer atamak çalıştığınızda bir özel durum olmadan

attr_accessible :interest_ids 

.