Короткий ответ
- настройка
relative_url_root
в environments/production.rb
- создание маршрута "home" на мою домашнюю страницу
- Изменение кода
restful_authentication
в лесах для перенаправления на дом вместо /
Подробнее
Если у вас возникли проблемы из-за конфигурации suburi, вам следует настроить lative_url_root в вашем файле environment / production.rb:
config.action_controller.relative_url_root = "/scalatour"
По моему мнению, проблема, которую вы описываете здесь, является проблемой контроллера / маршрутов, и возможное решение может быть следующим:
1) Я бы настроил эти маршруты:
ActionController::Routing::Routes.draw do |map|
[...]
map.home 'home', :controller => 'welcome', :action => 'show'
map.login "login", :controller => "user_sessions", :action => "new"
map.logout "logout", :controller => "user_sessions", :action => "destroy"
map.root :login
end
2) Тогда контроллер UserSessions будет выглядеть так:
class UserSessionsController < ApplicationController
before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => :destroy
def new
@user_session = UserSession.new
end
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
redirect_back_or_default home_path
else
flash[:error] = "Sorry, unrecognized username or password."
render :action => :new
end
end
def destroy
current_user_session.destroy
redirect_back_or_default login_url
reset_session()
end
end
3) Просто для полноты, методы "require_user" и "require_no_user" могут быть размещены в ApplicationController и будут иметь вид:
def require_user
unless current_user
flash[:error] = t("You must be logged-in to access this page")
redirect_to login_path
return false
end
end
def require_no_user
if current_user
redirect_to home_path
return false
end
end
С уважением