10

マルチステップフォームで作業しています(Wicked gemを使用)。フォームの最初のいくつかのステップでは、ユーザーモデルを編集しており、それらのステップは正常に機能します。次に、ユーザーモデルとHABTMの関係にある「インタレスト」モデルを試します。ただし、このエラーが発生します:

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 %>

何か案は?ありがとう!

4

1 に答える 1

21

これをユーザーモデルに追加することで、このエラーを取り除くことができます。

attr_accessible :interest_ids

これがないと、属性は一括割り当てinterest_idsから保護され、とにかく値を割り当てようとすると、例外がスローされます。

于 2012-05-12T02:48:02.843 に答える