Frage

Ich habe Routen wie folgt aus:

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'

Was würde Ich mag es bekommen, dass nach der Eingabe. Www.example.com es mir www.example.com/en/prepayments umleiten würde

Früher, als ich map.root von oben Beispiel verwenden es ist gerade im www.example.com und korrekten Sicht gemacht (aber es war ohne :locale und es funktionierte gut), später habe ich :locale auf meine Wege und aus dieser Zeit meine Sicht ( dass Anwendungen in irgendeiner Form) nicht ordnungsgemäß funktionieren. Ich bekomme Fehler, dass es nicht entsprechende Route für Form finden kann -. Was richtig ist, weil ich keinen :locale bestanden habe

So, wie root auf eine andere Seite umgeleitet werden? Es wird wahrscheinlich richtigen Pfad muß generieren und durch http 302 passieren. Oder / Und wie man so etwas wie:

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

EDIT: Meine Rake Routen sieht wie folgt aus:

         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"}

EDIT:

Ich habe versucht, es in der Art und Weise Garrett vorgeschlagen und es funktionierte tun. Ich änderte Routen:

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

und hinzugefügt willkommen Verfahren in der Steuerung:

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

Und es funktioniert, wie ich wollte (so es url in meinem Browser ändert).

Der andere Weg ist zu ändern Routen wie folgt aus:

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

Es funktioniert auch, aber es wird Umleitung nicht (es url nicht in Browser ändern). Ich bin mir nicht sicher, ob es eine solche Option als map.redirect. Ich fand es in den Beispielen auf www aber ich habe auch Plugin gefunden, dass eine solche Funktionalität hinzuzufügen.

Vielen Dank für die Hilfe!

War es hilfreich?

Lösung

Sie müssen den Controller an einen Welcome setzen oder was nicht, dann, wenn , die Controller getroffen wird, es auf die Route umleiten werden Sie wollen. Vielleicht Rails-3-Routing besser so für Sachen sein, aber jetzt für, erhalten Sie einen Haupt Root-Controller haben müssen.

Andere Tipps

In Rails 3 Sie schreiben können:

root :to => redirect('/prepayments')

Die folgende Seite hat eine gute Einführung in diese Umleitungen tun in Rails 3: http://www.railsdispatch.com/ Beiträge / Schienen-Routing

Umleitungsoptionen scheint nicht zu sein, dokumentiert zu gut.
Hier gehen Sie (@derek, siehe letztes Beispiel):

Umleitung auf eine Sub-Domain auf die Domain der aktuellen Anforderung

root to: redirect(subdomain: 'foo', path: '/bar') # => foo.example.com/bar

Umleitung mit substituierten params von dem angepassten Route

get 'stores/:name(*all)', to: redirect(subdomain: 'stores', path: '/%{name}%{all}')

Umleitung mit dem Statuscode (z. B. 302 statt Standard-301)

redirect(path: '/foo', status: 302)

Umleitung mit einem bedingten Block

redirect(status: 302) { |params, request|
  case request.host
  when 'localhost'
    '/foo'
  when /example.com$/
    '/bar'
  else
    '/baz'
  end
}

In Rails 4 (4.2.0 in meinem Fall), habe ich diese: match "*path" => "main#index", :via => [:get, :post] zu app/config/routes.rb

.

Um herauszufinden, was Sie sollen anstelle von main setzen. Schauen Sie in dieser Datei: app/controllers/main_controller.rb. Auch hier können Sie nicht main_controller.rb genannt werden, aber es wird something_controller.rb, wahrscheinlich nicht application_controller.rb oder servers_controller.rb sein. In dieser Datei werden Sie einige Code, der wie folgt aussieht sehen:

class MainController < ApplicationController
  def index
    render :layout => "angular"
  end
end

Wo es MainController , sollten Sie die Fehlermeldung zu sagen, die Lage sein, die in Ihrem Browser Schiene bietet, was von hier zu tun. Ersetzen Sie einfach main in match "*path" => "main#index", :via => [:get, :post] mit dem, was das Präfix des Controllers ist.

Hope macht Sinn. Ich bin einen rubin Anfänger als auch

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top