我应该在哪个控制器中定义personal_detail页面,用户可以在其中输入额外的详细信息,如年龄,性别和体重,我正在使用devise(Ruby)?

eni9jsuy  于 2023-05-17  发布在  Ruby
关注(0)|答案(1)|浏览(77)

我给我的用户添加了额外的参数:年龄,:体重,:身高,:目标,:经验。但用户的控制器是通过设计的。它是应用程序控制器。我也有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?

mzsu5hc0

mzsu5hc01#

您添加到ApplicationController的所有方法都不属于那里。ApplicationController是所有应用程序控制器的站点范围的祖先,所以唯一应该存在的东西是所有控制器都会使用的方法、宏、过滤器。
如果Devise正在处理您的用户注册,并且已经定义了UserController,那么出于您所描述的目的,您可以创建一个名为(例如)UserDetailsController的控制器。
认为控制器和模型之间应该存在配对是一种误解。正如你现在看到的,控制器可以用来描述一个工作流程……在这种情况下,用户正在输入他们的详细信息。

相关问题