Ruby on rails 用户中的NoMethodError#显示-未识别关联对象(NilClass)
我发现了错误 nil:NilClass的未定义方法“name” 对于users/show.html.erb中的这行代码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 每个用户都有一个配置文件。这也可能与我如何完成“注册”表单有关,该表单在用户注册表单中包含配置文
<%= 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 -->