0

我有一个像这样的会话控制器

def create
    user = User.find_by_email(params[:session][:email])
    if user && user.authenticate(params[:session][:password])
      sign_in user
      redirect_to user
    else
      flash.now[:error] = 'Invalid email/password combination' # Not quite right!
      render 'new'
    end
  end

如果您在成功登录时注意到它会执行 redirect_to user ,这是用户控制器中的显示操作。

但是说我必须去用户控制器的新操作,那么我该怎么做呢?

4

2 回答 2

1

redirect_to user只是 的快捷方式redirect_to url_for(user),它为给定资源 ( ) 生成 url url_for,然后重定向到它。

如果你想重定向到另一个 url,你可以使用 path helper。

redirect_to new_user_path

您还可以使用url_for帮助程序生成 url。

redirect_to url_for(:controller => "users", :action => "new")

可以缩短为

redirect_to :controller => "users", :action => :new

您甚至可以直接指定一个 url ( redirect_to '/users/new') -我不建议这样做,因为您以后不能在不更改所有 url 的情况下更改路由。

文档

如您所见,有很多方法可以redirect_to在 rails 中指定 url。查看所有文档

于 2012-08-02T22:23:26.797 回答
1

从另一个控制器渲染一个动作:

render 'users/new'

见: http: //guides.rubyonrails.org/layouts_and_rendering.html#using-render

于 2012-08-02T22:25:30.157 回答