我阅读了许多相关文章,但找不到为什么它对我不起作用。我仍然有一个“无法批量分配 protected 属性:配置文件” ...
我究竟做错了什么 ?

我有一个用户模型和一个具有一对一关系的相关配置文件模型。
此处用户模型(简体)

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

我的用户 Controller
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

如果可以提供任何帮助,则“用户”和“个人资料”均被设置为脚手架。

我也尝试使用':profiles_attributes'而不是用户attr_accessible中的'profile_attributes',同样的问题...

也尝试过,在用户 Controller 中使用“@ user.profiles.build”而不是“@ user.build_profile” ...相同的结果...

任何说明的帮助都将很棒(我是菜鸟,请原谅我)

编辑
我使用
的简单形式
<%= 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 %>

干杯

最佳答案

您引用的错误消息为can't mass-assign protected attributes: profiles。我相信您需要一个attr_accessible :profiles(或者可能是:profile)

我有一个应用

accepts_nested_attributes_for :order_items
attr_accessible :order_item

关于ruby-on-rails-3.2 - 无法批量分配 protected 属性: profiles,,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13824762/

10-13 04:50