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
相关产品推荐
相关产品推荐

