2014-02-19 2 views
0

Когда мой пользователь подписывается, он первоначально перенаправляется на страницу пустого профиля.Как перенаправить на другую страницу в моем приложении?

Однако, мне нужно, чтобы пользователь был перенаправлен на дополнительной информационной странице с тем чтобы получить более подробную информацию

Мои пользователи контроллер выглядит следующим образом

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 

конца

private 

def user_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation) 
end 

конец

Как вы можете видеть, дополнительная_инфо - это другая страница, которую я пытаюсь для перенаправления. Я знаю, что я создаю 2 объекта пользователей, но я не уверен, что это правильно. Честно говоря, я потерян.

моих маршрутов для страниц это:

resources :users 
resources :sessions, only: [:new, :create, :destroy] 
match '/additionalinfo',to: 'users#additional_info', via: 'get' 

Спасибо за помощь!

ответ

2

в ваших маршрутах

match '/additionalinfo',to: 'users#additional_info', via: 'get', as: :additional_info 

контроллер

redirect_to additional_info_path 
+0

Лучше использовать 'get', так как Rails 4 обесценивает' match'. Я отредактирую ответ. – markets

+0

Вы можете объяснить эту деталь как:: Дополнительная_инфо? это потому, что я определил его в своем userController? –

+0

'as' используется для указания имени для любых маршрутов. вы можете указать как:: info, тогда ваш путь станет info_path. –

0

В качестве альтернативы, вы можете изменить перенаправлять линию:

redirect_to action: 'additional_info' 

Если у вас есть действие, определенное в маршрутах:

get :additional_info, to: 'users#additional_info' # use get rather than match 
+0

Можете ли вы объяснить преимущества выполнения команды vs match? –

+0

Rails 4 осуждает это. [Здесь] (http://homakov.blogspot.com.es/2012/04/whitelist-your-routes-match-is-evil.html) хорошая статья, раскрывающая некоторые проблемы с использованием 'match': безопасность, плохие практики, нет RESTful ... – markets

+0

ваш не работает, говорит, что нет матчи маршрута? –

Смежные вопросы