75 votes

Comment faire du contenu statique dans les Rails ?

Regarde les différentes options :

L’un est de mettre juste les pages statiques dans le public / dossier, mais je veux l’en-tête de disposition/application soit compatible.

J’ai essayé, mais j’ai eu une erreur :

Tout que je veux est un moyen facile de mettre sur pied des choses comme ma faq, contact, tos, vie privée, et autre type de non application pages un endroit facile en créant simplement un .rhtml. qui a fait cela ?

179voto

Roland Studer Points 1988

Pour Rails4 , vous pouvez faire ce qui suit :

Mettre la ligne ci-dessous à la fin de votre routes.rb

Alors demandes à racine/welcome, rendra la /app/views/static/welcome.html.erb.

N’oubliez pas de créer un contrôleur « static », même si vous n’avez pas à mettre n’importe quoi là-dedans.

Pour Rails3 il faut utiliser « adapter » au lieu de « get »

31voto

Gabe Martin-Dempesy Points 2414

Thoughtbot est un plugin appelé high_voltage pour afficher le contenu statique : https://github.com/thoughtbot/high_voltage

22voto

Omar Qureshi Points 5755

dépend de la structure de l'url, si vous voulez les chemins de sortir de / (par exemple /about_us), puis:

map.connect ':action', :controller => "static"

Cela devrait aller à la fin de votre fichier de routes, Jetez votre .html.cre des fichiers dans/app / views/statique et vous avez terminé.

e.g: le fait de lancer en about_us.html.erb, vous donnera une page à l' /about_us.

L'élément que vous avez dans votre question est idéal pour un fourre-tout de l'itinéraire où vous pouvez analyser le tableau qui vous est donné en params[:path]. Un peu plus d'informations sur ce à http://railscasts.com/episodes/46-catch-all-route

13voto

Tate Johnson Points 2700

Le rendu d'une action n'a pas de sens. Vous aurez envie de rendre un template (ou un fichier) avec une mise en page.

# Path relative to app/views with controller's layout
render :template => params[:path]

# ... OR

# Absolute path. You need to be explicit about rendering with a layout
render :file => params[:path], :layout => true

Vous pouvez servir une variété de différents modèles à partir d'une seule action avec la page en cache.

# app/controllers/static_controller.rb
class StaticController < ApplicationController
  layout 'static'

  caches_page :show

  def show
    valid = %w(static1 static2 static3)
    if valid.include?(params[:path])
      render :template => File.join('static', params[:path])
    else
      render :file   => File.join(Rails.root, 'public', '404.html'), 
             :status => 404
    end
  end
end

Enfin, nous avons besoin de définir un itinéraire.

# config/routes.rb
map.connect 'static/:path', :controller => 'static', :action => 'show'

Essayez d'accéder à ces pages statiques. Si le chemin d'accès ne comprend pas un modèle valide, nous allons le rendre le 404 fichier et renvoyer une 404 état.

  • http://localhost:3000/static/static1
  • http://localhost:3000/static/static3
  • http://localhost:3000/static/static2

Si vous jetez un oeil dans app/public, vous remarquerez une statique/ répertoire avec static1.html, static2.html et static3.html. Après avoir accédé à la page pour la première fois, toutes les demandes subséquentes seront entièrement statique grâce à la page en cache.

2voto

gkrdvl Points 547

Considérer si vous avez 1 accueil contrôleur avec méthode de couple aime montrer, aboutus, protection des renseignements personnels :

Carte la méthode show à votre racine et l’autre carte pour certains itinéraires désignés comme

Et avec vue pour chacun

Tout en utilisant la même présentation à app/views/layout/application.html.erb

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X