我创建了一个应用,其中用户拥有个人资料,个人资料属于用户。 它已设置,因此在创建用户(在用户控制器中)时会自动创建配置文件
我不是要设置它,以便用户可以访问编辑页面(配置文件控制器 - >编辑操作)并通过渲染表单编辑他们的配置文件信息(使用_form partial)
我无法理解为什么我无法显示编辑表单,据我所知,方法定义正确?有人有任何想法吗?非常感谢任何帮助!
浏览器:
NoMethodError in ProfilesController#edit
undefined method `user' for nil:NilClass
def edit
@profile = @profile.user
end
def destroy
个人资料管理员:
class ProfilesController < ApplicationController
before_action :logged_in_user, only: [:edit, :destroy]
def edit
@profile = @profile.user
end
def destroy
end
end
用户控制器
class UsersController < ApplicationController
before_action :logged_in_user, only: [:edit, :update]
before_action :correct_user, only: [:edit, :update]
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
@user.profile = Profile.new
@user.send_activation_email
flash[:info] = "Please check your email to activate your account."
redirect_to root_url
else
render 'new'
end
end
...
视图/简档/ edit.html.erb
<% provide(:title, 'Edit Profile') %>
<h1>Editing profile</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@profile) do |f| %>
<%= render 'form', f: f %>
<%= f.submit "Edit Information", class: "btn btn-primary" %>
<% end %>
</div>
</div>
视图/简档/ _form.html.erb
<%= render 'shared/error_messages' %>
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>
...
答案 0 :(得分:1)
在不知道你的身份验证系统是什么样的情况下,虽然你提到你看过设计并构建了自己的身份,所以我认为你需要在你的编辑行动中做这样的事情
def edit
@profile = current_user.profile
end
答案 1 :(得分:0)
您想要访问用户&#39;个人资料而不是个人资料用户,请在个人资料管理器中尝试此操作。