Ruby on rails 用户中的NoMethodError#显示-未识别关联对象(NilClass)

Ruby on rails 用户中的NoMethodError#显示-未识别关联对象(NilClass),ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我发现了错误 nil:NilClass的未定义方法“name” 对于users/show.html.erb中的这行代码 <%= provide(:title, @profile.name) %> 这在以前工作过,因此我怀疑问题出在用户控制器中: def show @user = User.find(params[:id]) @profile = @user.profile end 每个用户都有一个配置文件。这也可能与我如何完成“注册”表单有关,该表单在用户注册表单中包含配置文

我发现了错误

nil:NilClass的未定义方法“name”

对于users/show.html.erb中的这行代码

<%= provide(:title, @profile.name) %>
这在以前工作过,因此我怀疑问题出在用户控制器中:

def show
 @user = User.find(params[:id])
 @profile = @user.profile
end
每个用户都有一个配置文件。这也可能与我如何完成“注册”表单有关,该表单在用户注册表单中包含配置文件字段:

<%= form_for(@user, url: signup_path, id: "register_form", class: "form-horizontal" ) do |f| %>
          <%= render 'shared/error_messages' %>
            <div class="form-group">
              <h4>Account information</h4>
              <%= f.label :email, class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                <%= f.email_field :email, class: 'form-control', placeholder: "john@example.com" %>
              </div>
              <%= f.label :password, class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                <%= f.password_field :password, class: 'form-control', placeholder: "A-Z,a-z,0-9" %>
              </div>
              <%= f.label :password_confirmation, "Confirm password", class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                <%= f.password_field :password_confirmation, class: 'form-control', placeholder: "Confirm password" %>
              </div>
            </div>

        <%= f.fields_for :profile do |p| %>

            <div class="form-group">
              <h4>About You</h4>
              <%= p.label :first_name, class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                 <%= p.text_field :first_name, class: 'form-control', placeholder: 'First Name' %>
              </div>
            </div>


  <!-- more profile fields here, removed for brevity -->

        <% end %> <!-- fields_for @user.profile -->
      <%= f.submit "Create my account", class: "btn btn-primary" %>
    <% end %> <!-- form_for @user -->

帐户信息
关于你

@user.profile
为零..是正确答案。您可能找不到您的@user,或者您没有为他们分配配置文件。@配置文件为零,即配置文件“@user”没有创建配置文件。我正在同时创建用户及其配置文件。坏主意?配置文件应该是一个单独的表单吗?您是否已在用户控制器(参数require(:user).permit(:email,:password,:password\u confirmation,:profile=>[:firstname,:lastname])中添加了此选项
<%= form_for(@user, url: signup_path, id: "register_form", class: "form-horizontal" ) do |f| %>
          <%= render 'shared/error_messages' %>
            <div class="form-group">
              <h4>Account information</h4>
              <%= f.label :email, class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                <%= f.email_field :email, class: 'form-control', placeholder: "john@example.com" %>
              </div>
              <%= f.label :password, class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                <%= f.password_field :password, class: 'form-control', placeholder: "A-Z,a-z,0-9" %>
              </div>
              <%= f.label :password_confirmation, "Confirm password", class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                <%= f.password_field :password_confirmation, class: 'form-control', placeholder: "Confirm password" %>
              </div>
            </div>

        <%= f.fields_for :profile do |p| %>

            <div class="form-group">
              <h4>About You</h4>
              <%= p.label :first_name, class: 'col-sm-2 control-label' %>
              <div class="col-sm-10">
                 <%= p.text_field :first_name, class: 'form-control', placeholder: 'First Name' %>
              </div>
            </div>


  <!-- more profile fields here, removed for brevity -->

        <% end %> <!-- fields_for @user.profile -->
      <%= f.submit "Create my account", class: "btn btn-primary" %>
    <% end %> <!-- form_for @user -->