Ruby on rails 如何将_重定向到我的应用程序中的其他页面?
当我的用户注册时,它最初会被重定向到空白的个人资料页面 但是,我需要将用户重定向到其他信息页面,以便检索更多信息 我的用户控制器看起来像这样Ruby on rails 如何将_重定向到我的应用程序中的其他页面?,ruby-on-rails,model-view-controller,controller,routes,Ruby On Rails,Model View Controller,Controller,Routes,当我的用户注册时,它最初会被重定向到空白的个人资料页面 但是,我需要将用户重定向到其他信息页面,以便检索更多信息 我的用户控制器看起来像这样 class UsersController < ApplicationController def show @user = User.find(params[:id]) end def new @user = User.new end def additional_info @user = User.ne
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
@user = User.new
end
def additional_info
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
UserMailer.welcome_email(@user).deliver
sign_in @user
redirect_to users: 'additional_info'
flash[:success] = "Welcome to InYourShoes!"
return @user
else
render'new'
end
结束
如您所见,附加信息是我试图重定向到的另一个页面。我知道我创建了两个users对象,但我不确定它是否正确。坦率地说,我有点迷路了
我的页面路径如下:
resources :users
resources :sessions, only: [:new, :create, :destroy]
match '/additionalinfo',to: 'users#additional_info', via: 'get'
谢谢你的帮助 在您的路线中
match '/additionalinfo',to: 'users#additional_info', via: 'get', as: :additional_info
内部控制器
redirect_to additional_info_path
或者,您可以将重定向行更改为:
redirect_to action: 'additional_info'
假设您在路由中定义了操作:
get :additional_info, to: 'users#additional_info' # use get rather than match
最好使用
get
,因为Rails 4不推荐match
。我会编辑答案。你能解释一下这个部分吗::附加信息?这是因为我在userController中定义它的方式?“as”用于为任何路由命名。你可以给as::info,那么你的路径就会变成info_path。你能解释一下get vs match的好处吗?Rails 4不赞成这样做。使用match
揭示一些问题的一篇好文章:安全性、错误做法、无RESTful…尝试重新启动服务器或检查是否有任何问题,然后\u筛选器导致无路由匹配。我在Rails 3.2应用程序中试用过,效果非常好。你能粘贴完整的错误信息吗?
get :additional_info, to: 'users#additional_info' # use get rather than match