Корневой URL перенаправления к где-то в другом месте в приложении направляющих

У меня есть маршруты как это:

map.namespace 'prepayments', :path_prefix => '/:locale/prepayments'  do |prepayment|
  prepayment.root  :controller => 'login', :namespace => 'prepayments'
  ...
end

map.redirect '/', :controller => 'prepayments/login' # this is not working
# I tried also
map.root :controller => 'prepayments/login'

То, что я хотел бы получить, то, что после ввода: www.example.com это перенаправило бы меня на www.example.com/en/prepayments.

Ранее, когда я использовал map.root от вышеупомянутого примера это просто осталось в www.example.com и представило корректное представление (но это было без :locale и это работало хорошее), позже я добавил :locale к моим маршрутам и с этого времени мое представление (который использует некоторую форму) не работает правильно. Я получаю ошибку, что она не может найти соответствующий маршрут для формы - который является правильным, потому что я не передал никого :locale.

Так, как перенаправить корень к другой странице? Это должно будет, вероятно, генерировать корректный путь и передать его через http 302. Или/И как сделать что-то как:

map.root :controller => 'prepayments/login', :my_locale => 'en'

Править: Мои маршруты граблей похожи на это:

         prepayments_root  /:locale/prepayments               {:controller=>"prepayments/login", :action=>"index"}
       prepayments_create  /:locale/prepayments/send_email    {:method=>:post, :controller=>"prepayments/login", :action=>"send_email"}
         prepayments_home  /:locale/prepayments/home          {:controller=>"prepayments/prepayments", :action=>"home"}
         prepayments_save  /:locale/prepayments/save          {:controller=>"prepayments/prepayments", :action=>"save"}
        prepayments_agree  /:locale/prepayments/agree         {:controller=>"prepayments/prepayments", :action=>"agree"}
     prepayments_disagree  /:locale/prepayments/disagree      {:controller=>"prepayments/login", :action=>"logout"}
      prepayments_payment  /:locale/prepayments/payment       {:controller=>"prepayments/prepayments", :action=>"payment"}
prepayments_payment_email  /:locale/prepayments/payment_email {:controller=>"prepayments/prepayments", :action=>"payment_email"}
                           /:locale/prepayments/:uid          {:controller=>"prepayments/login", :action=>"verify"}
                 redirect  /                                  {:controller=>"prepayments/login", :action=>"index"}

Править:

Я пытался делать его в способе, которым сделал предложение Garrett, и это работало. Я изменил маршруты:

map.redirect '/', :controller => 'prepayments/login', :action => 'welcome'

и добавленный желанный метод в контроллере:

def welcome
  redirect_to prepayments_root_path(:locale => 'en')
end

И это работает, как я хотел (таким образом, это изменяет URL в моем браузере).

Другой путь состоит в том, чтобы изменить маршруты как это:

map.root :controller => 'prepayments/login', :locale => 'en'

Это также работает, но это не перенаправляет (это не изменяет URL в браузере). Я не уверен, существует ли такая опция как map.redirect. Я нашел его в примерах на www, но я также нашел плагин, которые добавляют такую функциональность.

Спасибо за справку!

31
задан klew 14 January 2010 в 18:48
поделиться

1 ответ

Вам нужно будет установить контроллер на Добро пожаловать или что нет, то, когда , что контроллер удается, он будет перенаправлен на нужный маршрут. Возможно, рельсы 3 маршрутизации будут лучше для этого, но сейчас, но сейчас вам нужно будет иметь основной корневой контроллер.

-6
ответ дан 27 November 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: