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

サインインが成功したことに気付いた場合は、ユーザーコントローラーのshowアクションであるredirect_touserを実行します。

しかし、その代わりに、ユーザーコントローラーの新しいアクションに移動する必要があると言うと、どうすればよいですか?

4

2 に答える 2

1

redirect_to userredirect_to url_for(user)は、特定のリソース ( ) の URL を生成し、url_forそこにリダイレクトするための単なるショートカットです。

別の URL にリダイレクトする場合は、パス ヘルパーを使用できます。

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

To render an action from another controller:

render 'users/new'

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

于 2012-08-02T22:25:30.157 に答える