我给我的用户添加了额外的参数:年龄,:体重,:身高,:目标,:经验。但用户的控制器是通过设计的。它是应用程序控制器。我也有pages_controller,我有主页和 Jmeter 板页面。我想创建一个页面,用户可以在注册后输入个人信息的权利。我在页面视图中创建了一个personal_details.html.erb。现在我正在努力决定应该在哪里定义方法(application_controller或pages_controller)。应该是create还是update方法?
到目前为止,我已经将此输入到应用程序控制器
def new
@user = User.new
end
def create
@user = current_user
@user = User.new(user_params)
end
def user_params
params.require(:user).permit(:first_name, :last_name, :age, :weight, :height, :goal, :experience, :age)
end
end
p.s我是一个编码新手。刚结束2个月的训练营
class ApplicationController < ActionController::Base
before_action :authenticate_user!
before_action :logged_in_user, only: [:edit, :update]
def new
@user = User.new
end
def create
@user = current_user
@user = User.new(user_params)
end
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Thank you"
redirect_to @user
# Handle a successful update.
else
render 'edit'
end
end
def user_params
params.require(:user).permit(:first_name, :last_name, :age, :weight, :height, :goal, :experience, :age)
end
end
我不知道如何在注册后立即转到personal_details页面。是否需要创建user_controller?
1条答案
按热度按时间mzsu5hc01#
您添加到ApplicationController的所有方法都不属于那里。ApplicationController是所有应用程序控制器的站点范围的祖先,所以唯一应该存在的东西是所有控制器都会使用的方法、宏、过滤器。
如果Devise正在处理您的用户注册,并且已经定义了UserController,那么出于您所描述的目的,您可以创建一个名为(例如)UserDetailsController的控制器。
认为控制器和模型之间应该存在配对是一种误解。正如你现在看到的,控制器可以用来描述一个工作流程……在这种情况下,用户正在输入他们的详细信息。