web-dev-qa-db-fra.com

Comment rediriger vers root - public / index.html?

Je souhaite faire une redirection vers index.html dans mon dossier application/public.

def get_current_user
   @current_user = current_user
   if @current_user.nil?  
      redirect_to root_path
   end 
end

Comment puis-je y parvenir?

Je n'ai pas modifié la racine dans mes routes.rb (c'est toujours commenté)

 # root :to => "welcome#index"

Je reçois une erreur indiquant que root_path n'est pas défini.

Comment modifier routes.rb pour que root_path pointe vers public/index.html?

24
geeky_monster

Ce que vous voulez faire n'est pas Rails compatible.

Rails est MVC, C pour le contrôleur, V pour la vue.

Ses internes ont donc besoin des deux.

Ok, public/index.html Est affiché par défaut mais c'est juste parce que le processus est contourné.

Ainsi, vous pouvez créer un contrôleur static avec une action index et sa vue correspondante (copiez/collez simplement le contenu de votre fichier public/index.html Actuel).

Réglez ensuite:

root :to => "static#index"

Et s'il vous plaît, supprimez le fichier public/index.html :)

4
apneadiving

Vous pouvez affecter une route nommée à un fichier statique en passant n'importe quelle chaîne non vide comme :controller et le chemin d'accès au fichier en tant que :action pour l'itinéraire:

Application.routes.draw do

  root :controller => 'static', :action => '/' 
  # or
  # root :controller => 'static', :action => '/public/index.html'

end

# elsewhere

redirect_to root_path # redirect to /

En supposant que vous avez un public/index.html, c'est ce qui sera servi.

24
meagar

sur le contrôleur

 redirect_to root_path (will redirect to root '/')
8
Rahul Patel

fichier d'itinéraire:

     root 'main#index'

manette:

     class MainController < ApplicationController
       def index
         redirect_to '/index.html'
       end
     end

et en utilisant Rails 4 action du contrôleur en direct cela peut se comporter comme une application d'une seule page utilisant le M & C avec une torsion sur le V

4
copremesis