2009-03-20 7 views
1

Je fais un tutoriel de Head-First Rails (via Safari Online) et ne peut pas obtenir le HTML édité pour apparaître dans le navigateur (les changements, je veux dire). Plus précisément, je change juste l'étiquette pour l'une des colonnes de "Seat seq id" à "Seat #". J'ai ouvert les quatre fichiers de vue, edit, index, new et show.html.erb. Partout il y a un 'f.label: seat_id_seq' que j'ai changé pour 'f.label' Seat # ''. Pour les en-têtes de tableau, j'ai placé le numéro de siège à l'intérieur des balises . J'ai enregistré les fichiers et actualisé le navigateur (et même redémarré le serveur), mais toutes les vues ont toujours l'ID de siège seq.Rails éditant le HTML dans les vues

Qu'est-ce qui me manque? J'ai vérifié l'errata mais rien de pertinent ici. Éditer # 7: S'il vous plaît noter que c'était dû à une incompatibilité entre Rails 2.3.2 et l'utilisation de Vim patchmode et/ou des fichiers de sauvegarde, donc aucune des réponses upvoted n'est correcte. Je suis en train de mettre ceci ici afin que vous puissiez trouver la bonne résolution sans avoir à fouiller dans tous les messages.

Edit # 1: Contenu de routes.rb

ActionController::Routing::Routes.draw do |map| 
    map.resources :tickets 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
end 

Edit # 2: J'utilise vim pour modifier, sur Vista (pas d'autre choix à ce sujet).

Édition 3: ne semble pas démarrer en mode développement. Mais ne devrait pas redémarrer le serveur contourner cela?

Edit # 4: Sortie Mongrel:

C:\Users\kathyj\Desktop\tickets>ruby script/server -e development 
=> Booting Mongrel 
=> Rails 2.3.2 application starting on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 

Edit # 5: le navigateur ne Redémarrer pas aidé.

Edit # 6 @Sarah Mei:

<h1>New ticket</h1> 

<% form_for(@ticket) do |f| %> 
    <%= f.error_messages %> 

    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :seat_id_seq, "Seat #" %><br /> 
    <%= f.text_field :seat_id_seq %> 
    </p> 
    <p> 
    <%= f.label :address %><br /> 
    <%= f.text_area :address %> 
    </p> 
    <p> 
    <%= f.label :price_paid %><br /> 
    <%= f.text_field :price_paid %> 
    </p> 
    <p> 
    <%= f.label :phone %><br /> 
    <%= f.text_field :phone %> 
    </p> 
    <p> 
    <%= f.label :email_address %><br /> 
    <%= f.text_field :email_address %> 
    </p> 
    <p> 
    <%= f.submit 'Create' %> 
    </p> 
<% end %> 

<%= link_to 'Back', tickets_path %> 

Ce champ dit encore Seat id seq. @ Mark Robinson: la modification de l'en-tête Nouveau ticket n'a pas été prise en compte lors de l'actualisation du navigateur. De plus, je ne comprends pas toutes les sorties de Mongrel et je remarque que j'utilise une version plus récente de Rails.

N.b. Mon expérience Rails devrait être mesurée en heures, pas en jours.

@Ghoti: (1) Ctrl-F5 n'a fait aucune différence. J'ai également désactivé la mise en cache, comme l'a suggéré vrish88. (2) J'ai placé votre <% = nil.fail%> dans app \ views \ tickets \ new.html.erb juste au-dessus de la f.label pour le champ de nom, mais il a montré la même chose que jamais. J'ai même essayé d'utiliser IE; tout fonctionne mais aucun des changements que j'ai faits n'apparaît. (3) J'ai trouvé log \ development.log, mais je ne sais pas ce que vous cherchez. Il a beaucoup de lignes de traitement et de rendu, et montre quelques migrations. Les migrations qui ont ajouté une colonne n'apparaissent pas dans la vue. La migration qui a créé une autre table, je peux voir sa page.

+0

afin que vous puissiez accéder à toutes les différentes pages que vous "éditez" via un navigateur Web? –

+0

Je déteste essayer d'exécuter Rails sur Windows à cause d'une multitude de petits problèmes, peut-être c'est aussi un. Je vous recommande de configurer un VM Linux et de l'utiliser comme machine de développement. – OneHoopyFrood

Répondre

0

J'ai dégradé la gemme rails en 2.1.2 et mon code fonctionne bien.

Editer: Apparemment, il y a eu des changements dans la manière dont Rails conserve la trace des fichiers de vues à afficher (see an explanation of sorts here). J'ai seulement trouvé ce lien après avoir fait quelques tests d'essais et j'ai découvert que si je supprimais les fichiers de sauvegarde et de patch que j'ai configurés automatiquement, et redémarrait le serveur, mes modifications ont été récupérées en utilisant v 2.3.2.

J'ai changé mon fichier .vimrc pour que ces fichiers ne soient plus créés (les fichiers .swp ne causent pas de problème). C'est seulement dans le répertoire views que ces autres fichiers étaient problématiques.J'ai spécifiquement testé dans le répertoire controllers et n'ai eu aucune difficulté avec la présence d'un fichier patch. Maintenant, je peux modifier les vues et un simple rafraîchissement (F5) les récupère immédiatement.

+0

Heh, content que vous l'ayez compris. –

0

Le premier endroit que je voudrais vérifier est le fichier routes.rb.

0

Peut-être que ces pages sont mises en cache par des rails ou votre navigateur?

+0

Le tutoriel dit simplement rafraîchir le navigateur et les changements devraient apparaître. Je l'ai fait, mais juste au cas où Rails caches j'ai redémarré le serveur. – kajaco

2

Assurez-vous que les rails sont en mode développement. Lorsque vous exécutez script/serveur, voyez-vous la ligne ci-dessous. Sortie de démarrage de Mongrel ci-dessous.

=> Booting Mongrel (use 'script/server webrick' to force WEBrick) 
=> Rails 2.2.2 application starting on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
** Starting Mongrel listening at 0.0.0.0:3000 
** Starting Rails with development environment... 
** Rails loaded. 
** Loading any Rails specific GemPlugins 
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart). 
** Rails signals registered. HUP => reload (without restart). It might not work well. 
** Mongrel 1.1.5 available at 0.0.0.0:3000 
** Use CTRL-C to stop. 
+0

NO. Mais ni 'script/serveur ruby ​​-e développement' ne produit cette ligne. J'utilise le bâtard. – kajaco

+0

On aurait dit que vous étiez en mode production, mais si vous démarrez le serveur de cette façon, vous devriez être en mode dev. Avez-vous essayé d'ajouter un simple en-tête comme

bonjour

au fichier .html.erb pour voir si elle apparaît? – Mark

0

The label method prend un paramètre facultatif spécifiant le texte.

f.label :seat_id_seq 

est dilatée implicitement

f.label :my_model, :seat_id_seq 

ssi il est entouré par une balise form_for qui spécifie le modèle. Donc, tout ce que vous avez à faire est d'ajouter le paramètre text à votre appel.

f.label :seat_id_seq, "Seat #" 
# => <label for="seat_id_seq">Seat #</label> 
+0

Votre hypothèse est incorrecte, au moins en ce qui concerne ce tutoriel. Le code généré est '<% = f.label: seat_id_seq%>
' et le tutoriel dit spécifiquement de le changer pour '<% = f.label "Seat #"%>
' – kajaco

+0

Le peut être faux alors parce que vous avez besoin pour spécifier l'attribut que vous souhaitez cibler avec la balise label. Vous voulez quelque chose comme: <% = f.label: siège, "Seat #"%> – vrish88

+0

Si vous consultez les docs pour la méthode label (lié dans ma réponse), il prend un objet, une méthode et un texte - texte par défaut le nom de la méthode. Le tutoriel est faux s'il ne fait que passer un paramètre. –

1

Je voudrais essayer de redémarrer le navigateur. À moins que vous n'ayez explicitement activé la mise en cache dans votre application Rails, le serveur lui-même ne doit pas mettre en cache le contenu.

J'ai eu ce problème avec Firefox et je devrais redémarrer le navigateur de temps en temps pour voir les changements. Cependant, vous pouvez demander à Firefox d'arrêter la mise en cache du contenu. Check out: Turn off caching

0

Je n'ai jamais utilisé les aides de style f.label, mais ce que vous faites semble correct. Vous pouvez aller à ce sujet dans un mode jankier si vous:

  1. Ecrire une étiquette taguez, en HTML: <label for="seat_id_seq">Seat #:</label>
  2. Utilisation label comme suit: <%= label 'ticket', 'seat_id_seq', 'Seat #' %> Voir label et label_tag.

Assurez-vous que vous êtes en train d'éditer les vues dont vous avez besoin. Peut-être avez-vous des vues d'édition, de présentation, etc. dans d'autres répertoires.

2

Je pense que c'est la mise en cache du navigateur. Essayez d'appuyer sur ctrl-F5 plutôt que simplement sur F5.

Qu'est-ce qui apparaît dans votre journal lorsque la page est rendue?

Si vous souhaitez vous assurer qu'un modèle est en train d'être rechargé, placez-y une erreur et vérifiez si vous obtenez l'écran d'exception, par exemple <% = nil.fail%>. Si cela n'échoue pas, il n'est pas rechargé. Cela peut être quelque chose à voir avec les horodateurs sur votre machine, le mode développement regarde les horodatages pour voir ce qui doit être rechargé.

La commande label est correcte. Je vous recommande de télécharger Rails Brain et Ruby Brain de sorte que vous avez la documentation à portée de main et aller droit au but. La documentation dit

étiquette

(nom_objet, méthode, texte = nul, options = {})

Parce que vous êtes dans une aide de forme (avec le paramètre bloc f) le paramètre de nom de l'objet est supposé.

Questions connexes