web-dev-qa-db-fra.com

Ajout d'une nouvelle page en Ruby on Rails

Tout nouveau à Ruby on Rails et je suis coincé sur une tâche probablement facile. En gros, je travaille sur l'application d'un collègue et j'ai besoin d'ajouter une page supplémentaire qui montre aux utilisateurs comment l'application fonctionne. J'ai déjà écrit le code HTML et les styles. Je ne sais pas comment l'ajouter exactement à Rails et configurer les itinéraires correctement. Toute aide serait appréciée!

31
user595419

First assurez-vous que votre collègue n'a pas déjà créé de contrôleur pour gérer les pages statiques. Regarder sous app/controllers pour les contrôleurs intitulés quelque chose de similaire à directories_controller ou pages_controller, etc. Si tel est le cas, suivez le modèle que votre collègue a déjà établi (vous voudrez peut-être lui demander des conseils à ce stade). S'il n'y a pas de contrôleur de pages statiques comme celui-ci, suivez les conseils ci-dessous.

Vous pouvez créer un contrôleur nommé quelque chose comme PagesController qui définit les méthodes qui correspondent à une route. Par exemple, votre page supplémentaire peut être appelée "aide", auquel cas vous pouvez définir un contrôleur comme ceci:

class PagesController < ActionController::Base
  def help
    # put any code here that you need 
    # (although for a static view you probably won't have any)
  end
end

Ensuite, vous voudrez créer un nouveau dossier sous app/views intitulé pages, et vous pouvez y ajouter votre page statique (application/vues/pages) avec un .erb extension. Utilisant un .erb permettra à votre nouvelle page d'utiliser la mise en page par défaut.

Enfin, vous devrez ajouter ce contrôleur à routes.rb dans (config/routes.rb) pour dire Rails où chercher le /help page:

match '/help' => 'pages#help'
42
McStretch

Pages statiques

Si vos pages sont vraiment statiques (rien de dynamique en elles), vous pouvez les déposer dans le /public et ils seront directement accessibles.

Un fichier dans ../public/help.html sera accessible à http://yourdomain.com/help.html

Pages semi-statiques

Si vous souhaitez utiliser vos mises en page mais simplement fournir du contenu statique, vous pouvez créer un contrôleur, des itinéraires et des vues pour cela comme suit.

# static_controller.rb
class StaticController < ApplicationController
  def show
    render params[:page]
  end
end

# towards the end of routes.rb
get "/:page" => "static#show"

Et donnez votre avis dans app/views/static. Vous pouvez également utiliser simplement html ou erb. Une vue appelée help.html.erb sera disponible sur http://yourdomain.com/help

Tout fichier de vue que vous créez sous app/views/static sera disponible sans modifier vos itinéraires ou votre contrôleur.

19
edgerunner