Tôi đã tìm kiếm khá lâu, nhưng không thể tìm thấy giải pháp. Dưới đây là mô hình của tôi:Không thể chỉ định khối lượng thuộc tính được bảo vệ tạo ra lỗi khi sử dụng biểu mẫu lồng nhau
web.rb
class Web < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :user_type, :remember_me
belongs_to :role, :polymorphic => true
end
user.rb
class User < ActiveRecord::Base
has_one :web, :as => :role
attr_accessible :dob, :fname, :lname
end
org.rb
class Org < ActiveRecord::Base
has_one :web, :as => :role
attr_accessible :name, :website
end
Tất cả mọi thứ có vẻ tốt đẹp cho đến khi tôi sử dụng simple_form_for thay vì form_for bình thường trong devise/đăng ký/new.html.erb
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => 'form-horizontal' }) do |f| %>
<%= f.input :email, label: false, :input_html => { :class => "span6", placeholder: "Email", type: "email", required: true}%>
<%= f.input :password, label: false, :input_html => { :class => "span6", placeholder: "Password", type: "password" }%>
<%= f.input :password_confirmation, label: false, :input_html => { :class => "span6", placeholder: "Re-enter Password", type: "password" }%>
<%= f.input :user_type, as: :hidden, :input_html => { :value => user_type} %>
<%= f.simple_fields_for resource.role do |rf| %>
<%= render :partial => "#{child_class_name.underscore}_fields", :locals => { :f => rf } %>
<% end %>
<%= f.submit "Sign up" %>
<% end %>
Phần làm tổ đặt phần với tên model_fields thích hợp, trong đó có lĩnh vực tương ứng.
* _org_fields.html.erb *
<%= f.text_field :name, :class=>"span6", :type=>"text", :placeholder=>"Name", :required=>"" %><br />
<%= f.text_field :website, :class=>"span6", :type=>"text", :placeholder=>"Website", :required=>"" %>
Vấn đề là với f.simple_fields_for, nếu tôi loại bỏ simple_ mọi thứ hoạt động tốt. Nhưng tôi không muốn nó bị loại bỏ. Các lỗi tôi gặp phải là:
ActiveModel::MassAssignmentSecurity::Error in Devise::RegistrationsController#create
Can't mass-assign protected attributes: org
các thông số yêu cầu là:
{"utf8"=>"✓",
"authenticity_token"=>"NnsyNdrrKJmd8QutqVs6HqZi0EnQmAmZF7zGYqnu+rI=",
"web"=>{"email"=>"",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"user_type"=>"org",
"org"=>{"name"=>"",
"website"=>""}},
"commit"=>"Sign up"}
Xin vui lòng giúp.
Bạn đang sử dụng phiên bản đường ray nào? – Philip7899
@ Philip7899 Tôi không biết về OP, nhưng tôi đang sử dụng đường ray 3.2.13 – GeekToL