1

我正在做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:routes.rb 的内容

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

编辑#2:我在 Vista 上使用 gvim 进行编辑(没有选择)。

编辑#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 @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 %>

该字段仍然显示 Seat id seq。

@Mark Robinson:在浏览器刷新时未选择更改 New Ticket 标头。此外,我没有得到你所做的所有 Mongrel 输出,我注意到我使用的是更新版本的 Rails。

注意我的 Rails 体验应该以小时而不是天来衡量。

@Ghoti:(1)Ctrl-F5 没有区别。正如 vrish88 建议的那样,我还关闭了缓存。(2) 我将您的 <%= nil.fail %> 推到了名称字段的 f.label 正上方的 app\views\tickets\new.html.erb 中,但它的显示与以往一样。我什至尝试过使用 IE;一切正常,但我所做的任何更改都没有出现。(3) 我找到了log\development.log,但我不知道你在找什么。它有很多处理和渲染行,并显示了一些迁移。添加列的迁移不会显示在视图中。创建另一个表的迁移,我可以看到它的页面。

4

8 回答 8

2

确保 rails 处于开发模式。当您运行脚本/服务器时,您会看到下面的行。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.
于 2009-03-20T17:50:02.450 回答
2

我认为这是浏览器缓存。尝试按 ctrl-F5 而不是 F5。

呈现页面时日志中出现了什么?

如果您想确保正在重新加载模板,请在其中放入容易出错的内容并查看是否出现异常屏幕,例如 <%= nil.fail %>。如果它没有失败,那么它不会被重新加载。这可能与您机器上的时间戳有关,开发模式会查看时间戳以查看需要重新加载的内容。

标签命令是正确的。我建议下载Rails BrainRuby Brain,这样你就可以拿到文档并直接使用它。文件说

标签(对象名称,方法,文本 = nil,选项 = {})

因为您处于表单助手中(使用块参数 f),所以假定对象名称参数。

于 2009-03-20T20:24:21.003 回答
1

我会尝试重新启动浏览器。除非您在 Rails 应用程序中明确打开缓存,否则服务器本身不应缓存内容。

我在使用 Firefox 时遇到了这个问题,我必须每隔一段时间重新启动浏览器才能看到更改。但是有一种方法可以告诉 Firefox 停止缓存内容。签出:关闭缓存

于 2009-03-20T18:49:04.647 回答
0

我要检查的第一个地方是 routes.rb 文件。

于 2009-03-20T17:37:04.773 回答
0

也许这些页面是由 Rails 或您的浏览器缓存的?

于 2009-03-20T17:42:01.890 回答
0

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>
于 2009-03-20T18:05:43.160 回答
0

我从未使用过f.label样式助手,但您所做的似乎是正确的。如果您:

  1. 自己写一个标签标签,在 HTML 中:<label for="seat_id_seq">Seat #:</label>
  2. label按如下方式使用:<%= label 'ticket', 'seat_id_seq', 'Seat #' %> 参见labellabel_tag

确保您实际上正在编辑您需要的视图。也许您在其他目录中也有编辑、显示等视图。

于 2009-03-20T20:09:38.370 回答
0

我将 rails gem 降级到 2.1.2,我的代码运行良好。

编辑:显然 Rails 跟踪要显示哪些视图文件的方式发生了一些变化(请参阅此处的各种解释)。我只是在进行了一些试错测试后才找到该链接,并发现如果我删除了我已将 Vim 配置为自动制作的备份和补丁模式文件,然后重新启动服务器,我的更改会在使用 v. 2.3 时被拾取.2.

我已经更改了我的 .vimrc 以便不再制作这些文件(.swp 文件不会导致问题)。这些其他文件仅在视图目录中存在问题。我专门在控制器目录中进行了测试,并且对补丁文件的存在没有任何困难。现在我可以对视图进行更改,只需简单的刷新 (F5) 即可立即获取它们。

于 2009-03-20T22:40:58.660 回答