You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 4.2.8中如何修改默认URL并在跳转时追加用户名

解决方案:Rails 4.2.8 中修改URL路由与注册跳转逻辑

嘿,我来帮你搞定这两个需求,分两步走就行:

1. 把 example.com/new_page 改成 example.com/new_page/username

首先得调整路由配置,打开你的config/routes.rb,把原来的new_page路由改成带用户名参数的形式:

# 替换你原来的new_page路由(比如原来的 get 'new_page' => 'xxx#xxx')
get 'new_page/:username', to: 'your_controller#your_action', as: :new_page

注意把your_controller和your_action替换成实际处理new_page的控制器和方法。然后在对应的控制器方法里,你可以通过params[:username]获取到用户名,比如:

def your_action
  @user = User.find_by(username: params[:username])
  # 这里写你的页面逻辑...
end

之后在视图或其他地方生成这个URL时,就用new_page_path(current_user.username)(如果是当前用户访问的话)来生成带用户名的链接。

2. 修改注册后的跳转链接为带用户名的格式

同样先调整路由,在config/routes.rb里把email_confirm路由改成带参数的形式:

get 'email_confirm/:username', to: 'users#email_confirm', as: :email_confirm

然后修改controllers/user_controller.rb里的create方法,把跳转逻辑改成传递用户名参数:

def create
  @user = User.new(user_params)
  if @user.save
    log_in @user
    flash[:success] = "almost success!"
    # 这里传递用户名参数给路由
    redirect_to email_confirm_path(@user.username)
  else
    flash.now[:danger] = '...'
  end
end

如果你的email_confirm方法需要用到用户名信息,还可以在方法里通过params[:username]获取:

def email_confirm
  @user = User.find_by(username: params[:username])
  # 邮箱确认的逻辑代码...
end

内容的提问来源于stack exchange,提问作者SylorHuang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:58:10