Rails редактирование HTML в представлениях - PullRequest
1 голос
/ 20 марта 2009

Я делаю учебник из Head-First Rails (через Safari Online) и не могу получить отредактированный HTML для отображения в браузере (я имею в виду изменения). В частности, я просто меняю метку для одного из столбцов с «Seat seq id» на «Seat #». Я открыл четыре вида файлов: edit, index, new и show.html.erb. Везде есть 'f.label: seat_id_seq', я изменил его на 'f.label "Seat #"'. Для заголовков таблиц я поместил Seat # внутри тегов . Я сохранил файлы и обновил браузер (и даже перезапустил сервер), но все виды по-прежнему имеют Seat id seq.

Чего мне не хватает? Я проверил ошибки, но там ничего не актуально.

Редактировать # 7: обратите внимание, что это произошло из-за несовместимости между Rails 2.3.2 и использованием патч-режима Vim и / или файлов резервных копий, поэтому ни один из ответов с поправками не является правильным. Я помещаю это здесь, чтобы вы могли найти правильное разрешение без необходимости пролистывать все сообщения.

Редактировать # 1: содержимое маршрутов. Rb

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

Редактирование # 2: я использую gvim для редактирования в Vista (выбора нет).

Редактировать # 3: Похоже, не запускается в режиме разработки. Но разве перезапуск сервера не должен обойти это?

Редактировать # 4: Выход беспорядка:

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

Редактировать # 5: перезапуск браузера не помог.

Редактировать # 6 @ Сара Мей:

<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 %>

В этом поле все еще написано Seat id seq.

@ Марк Робинсон: изменение заголовка нового билета не было обнаружено при обновлении браузера. Также я не получаю весь вывод Mongrel, который вы делаете, и я отмечаю, что использую более новую версию Rails.

N.b. Мой опыт работы с Rails должен измеряться часами, а не днями.

@ Ghoti: (1) Ctrl-F5 без разницы. Я также отключил кеширование, как предложил vrish88. (2) Я поместил ваш <% = nil.fail%> в app \ views \ tickets \ new.html.erb прямо над f.label для поля имени, но он выглядел так же, как и всегда. Я даже пытался использовать IE; все работает, но ни одно из внесенных мною изменений не появляется. (3) Я нашел log \ development.log, но я не знаю, что вы ищете. Он имеет много строк обработки и рендеринга и показывает некоторые миграции. Миграции, добавившие столбец, не отображаются в представлении. Миграция, которая создала другую таблицу, я вижу ее страницу.

Ответы [ 8 ]

2 голосов
/ 20 марта 2009

Убедитесь, что рельсы находятся в режиме разработки. Когда вы запускаете скрипт / сервер, вы видите строку ниже. Выходные данные Mongrel запуска ниже.

=> 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.
2 голосов
/ 20 марта 2009

Я думаю, что это кеширование в браузере. Попробуйте нажать Ctrl-F5, а не просто F5.

Что появляется в вашем журнале при отображении страницы?

Если вы хотите убедиться, что шаблон перезагружается, поместите в него что-то подверженное ошибкам и посмотрите, появляется ли экран исключений, например, <% = nil.fail%>. Если он не потерпит неудачу, он не будет перезагружен. Это может быть связано с метками времени на вашем компьютере, режим разработки просматривает метки времени, чтобы увидеть, что нужно перезагрузить.

Команда метки верна. Я рекомендую загрузить Rails Brain и Ruby Brain , чтобы иметь под рукой документацию и сразу перейти к ней. В документации написано

метка (имя_объекта, метод, текст = ноль, параметры = {})

Поскольку вы находитесь в помощнике по форме (с параметром блока f), предполагается параметр имени объекта.

1 голос
/ 20 марта 2009

Я бы попробовал перезапустить браузер. Если вы явно не включили кэширование в своем приложении Rails, то сам сервер не должен кэшировать контент.

У меня была эта проблема с Firefox, и мне приходилось перезагружать браузер время от времени, чтобы увидеть изменения. Однако есть способ сообщить Firefox о прекращении кэширования контента. Проверить: Отключить кеширование

0 голосов
/ 21 марта 2009

Я понизил гем rails до 2.1.2, и мой код работает нормально.

Редактировать: По-видимому, произошли некоторые изменения в том, как Rails следит за тем, какие файлы просмотра отображать (см. Пояснения здесь) . Я нашел эту ссылку только после того, как провел тестирование методом проб и ошибок, и обнаружил, что если я удалил файлы резервной копии и файлы режима исправления, которые я настроил для автоматического создания Vim, и перезапустил сервер, мои изменения были выбраны вверх при использовании v. 2.3.2.

Я изменил свой .vimrc, чтобы эти файлы больше не создавались (файлы .swp не вызывают проблем). Только в dir views эти другие файлы были проблемными. Я специально тестировал в dir контроллеров и не испытывал затруднений с наличием файла патча. Теперь я могу вносить изменения в представления, и простое обновление (F5) сразу же их забирает.

0 голосов
/ 20 марта 2009

Я никогда не использовал помощников в стиле f.label, но то, что вы делаете, кажется правильным. Вы можете сделать это более изящным способом, если вы:

  1. Напишите тег ярлыка самостоятельно, в HTML: <label for="seat_id_seq">Seat #:</label>
  2. Используйте label следующим образом: <%= label 'ticket', 'seat_id_seq', 'Seat #' %> См. label и label_tag .

Убедитесь, что вы действительно редактируете нужные вам представления. Возможно, у вас есть редактировать, показывать и т. Д. Представления в других каталогах.

0 голосов
/ 20 марта 2009

Метод label принимает необязательный параметр, определяющий текст.

f.label :seat_id_seq

неявно расширен до

f.label :my_model, :seat_id_seq

если он заключен в тег form_for, который определяет модель. Итак, все, что вам нужно сделать, это добавить текстовый параметр к вашему вызову.

f.label :seat_id_seq, "Seat #"
# => <label for="seat_id_seq">Seat #</label>
0 голосов
/ 20 марта 2009

Может быть, эти страницы кэшируются рельсами или вашим браузером?

0 голосов
/ 20 марта 2009

Первое место, которое я бы проверил, это файл rout.rb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...