Есть ли в любом случае использовать public / index.html для не авторизованных пользователей, но затем home # index для вошедших в систему - в Rails 3? - PullRequest
0 голосов
/ 14 марта 2011

Поэтому, когда посетитель переходит на / и он НЕ вошел в систему, он отправляется на public/index.html.

Но когда посетитель входит в систему и переходит на /, он отправляется на home#index, т.е. home контроллер, index действие.

В любом случае, чтобы сделать это, не преобразовывая public / index.html в файл erb или в представление?

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Файл с именем index.html в вашей общей папке всегда будет переопределять вашу маршрутизацию.

Однако вы можете переименовать index.html, указать root на свой контроллер home, и в контроллере просто наберите redirect_to '/new_name.html', если пользователь не вошел в систему.

Edit:

Поскольку запрашивающий использовал devise и фильтровал все действия в своем домашнем контроллере, этот второй редирект не работал. Фильтры авторизации отправляли его на страницу входа (это действие по умолчанию, когда в разрешении отказано).

Мы решили это, не фильтруя действие index и, таким образом, расчистив путь для нашего собственного перенаправления:

# home controller
before_filter :authenticate_user!, :except => [:index]
before_filter :redirect_to_marketing
# stuff
private
def
  unless user_signed_in?
    redirect_to '/marketing.html'
  end
end
1 голос
/ 14 марта 2011

public / index.html переопределит любой корневой маршрут. Так что, вероятно, невозможно делать то, что тебе нужно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...