6

関連する投稿をたくさん読みましたが、なぜうまくいかないのかわかりません。「保護された属性を一括割り当てできません: プロファイル」というメッセージがまだ残っています...何が間違っていますか?

1 対 1 の関係を持つ User モデルと関連する Profile モデルがあります。ここでユーザーモデル(簡略化)

class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation, :profile_attributes, :profile_id
  has_secure_password

  has_one :profile

  accepts_nested_attributes_for :profile
end

プロファイル モデル

class Profile < ActiveRecord::Base
attr_accessible :bio, :dob, :firstname, :gender, :lastname, :user_id

belongs_to :user
end

私のユーザーコントローラー

def new
@user = User.new 
  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @user }
  end
end

def create
@user = User.new(params[:user])
@user.build_profile

respond_to do |format|
  if @user.save

    format.html { redirect_to @user, flash: {success: 'User was successfully created. Welcome !'} }
    format.json { render json: @user, status: :created, location: @user }
  else
    format.html { render action: "new" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
end

参考になれば、User と Profile の両方が足場になっています。

ユーザーattr_accessibleで「profile_attributes」の代わりに「:profiles_attributes」を試してみましたが、同じ問題です...

ユーザーコントローラーの「@user.build_profile」の代わりに「@user.profiles.build」も試しました...同じ結果...

いくつかの説明の助けは素晴らしいでしょう(私はレールの初心者なので許してください)

編集私が使用する単純なフォーム

<%= simple_form_for(@user) do |f| %>
<%= f.error_notification %>


<%= f.simple_fields_for :profiles do |p| %>
    <div class="nested-form-inputs">
      <%= p.input :lastname %>
      <%= p.input :firstname %>
    </div>
<% end %>


<div class="form-inputs">
  <%= f.input :email %>
  <%= f.input :password %>
  <%= f.input :password_confirmation %>
</div>

<div class="form-actions">
  <%= f.button :submit %>
</div>

<% end %>

乾杯

4

2 に答える 2

5

あなたが引用したエラーメッセージは言うcan't mass-assign protected attributes: profiles. attr_accessible :profiles (またはおそらく:profile)が必要だと思います

私はアプリを持っています

accepts_nested_attributes_for :order_items
attr_accessible :order_item
于 2013-01-16T23:23:50.150 に答える
3

問題は Rails のクラス キャッシュにありました。サーバーを再起動したところ、すべてが完全に機能しています。

于 2013-01-17T07:36:41.547 に答える