Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 具有一个关系-`@practicer[user_attributes]';不允许作为实例变量名_Ruby On Rails_Nested Forms - Fatal编程技术网

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
类的实例。你能展示一下你的控制器吗?