Ruby on rails 具有一个关系-`@practicer[user_attributes]';不允许作为实例变量名
我正在尝试创建一个嵌套表单<代码>实践者有一个Ruby on rails 具有一个关系-`@practicer[user_attributes]';不允许作为实例变量名,ruby-on-rails,nested-forms,Ruby On Rails,Nested Forms,我正在尝试创建一个嵌套表单实践者有一个用户 class Practitioner < ActiveRecord::Base has_one :user accepts_nested_attributes_for :user private def practitioner_params params.require(:practitioner).permit(user_attributes: [:email, :password, :password_confi
用户
class Practitioner < ActiveRecord::Base
has_one :user
accepts_nested_attributes_for :user
private
def practitioner_params
params.require(:practitioner).permit(user_attributes: [:email, :password, :password_confirmation])
end
end
class从业者
我的表格是这样的
<%= form_for [:admin, @practitioner], url: spree.admin_practitioners_url, method: :post do |f| %>
<%= f.fields_for :user do |user_fields| %>
<%= user_fields.field_container :email, class: ['form-group'] do %>
<%= user_fields.label :email, Spree.t(:email) %>
<%= user_fields.email_field :email, :class => 'form-control' %>
<%= error_message_on :user, :email %>
<% end %>
<%= user_fields.field_container :password, class: ['form-group'] do %>
<%= user_fields.label :password, Spree.t(:password) %>
<%= user_fields.password_field :password, :class => 'form-control' %>
<%= error_message_on :user,:password %>
<% end %>
<%= user_fields.field_container :password, class: ['form-group'] do %>
<%= user_fields.label :password_confirmation, Spree.t(:confirm_password) %>
<%= user_fields.password_field :password_confirmation, :class => 'form-control' %>
<%= error_message_on :user,:password_confirmation %>
<% end %>
<%end%>
<%= f.field_container :name, class: ['form-group'] do %>
<%= f.label :name, Spree.t(:name) %>
<%= f.text_field :name, :class => 'form-control' %>
<%= error_message_on :practitioner, :name %>
<% end %>
<%= f.field_container :location, class: ['form-group'] do %>
<%= f.label :location, Spree.t(:location) %>
<%= f.text_field :location, :class => 'form-control' %>
<%= f.error_message_on :location %>
<% end %>
<% end %>
'窗体控件'%>
'窗体控件'%>
'窗体控件'%>
'窗体控件'%>
'窗体控件'%>
我得到下面的错误。我不知道我为什么会犯这样的错误
ActionView::Template::Error (`@practitioner[user_attributes]' is not allowed as an instance variable name):
1: <%= f.fields_for :user do |user_fields| %>
2: <div data-hook="admin_user_form_fields" class="row">
3: <div class="col-md-6">
4: <%= user_fields.field_container :email, class: ['form-group'] do %>
5: <%= user_fields.label :email, Spree.t(:email) %>
6: <%= user_fields.email_field :email, :class => 'form-control' %>
7: <%= error_message_on :user, :email %>
ActionView::Template::Error(`@practicer[user\u attributes]'不允许作为实例变量名):
1:
2:
三:
4:
5:
6:'表单控件'%>
7:
如果我将
更改为
,代码工作正常
编辑
实习控制员
class PractitionersController < ResourceController
def new
@practitioner = Practitioner.new
@practitioner.build_user
end
def create
@practitioner = Practitioner.new(permitted_resource_params)
if @practitioner.save
collection
render :index
else
render :new
end
end
class PractitionersController
使用
(而不是
)对父对象有效。
当在内时:仅用于的字段
似乎对我来说(nested_f
是嵌套对象的帮助器,所以在您的情况下应该是
)。我唯一想到的是你的@practice
对象不是practicer
类的实例。你能展示一下你的控制器吗?