Rails在视图中编辑HTML

时间:2009-03-20 17:22:38

标签: ruby-on-rails views

我正在从 Head-First Rails (通过Safari Online)进行教程,并且无法将编辑后的HTML显示在浏览器中(我的意思是更改)。具体来说,我只是将其中一个列的标签从“Seat seq id”更改为“Seat#”。我打开了四个视图文件,编辑,索引,新建和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:重新启动浏览器没有帮助。

#p>编辑#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。

N.b。我的Rails经验应该以小时而不是几天来衡量。

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

8 个答案:

答案 0 :(得分:2)

确保导轨处于开发模式。当您运行脚本/服务器时,您会看到下面的行。 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.

答案 1 :(得分:2)

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

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

如果您想确保重新加载模板,请在其中放置一些容易出错的内容,看看是否有异常屏幕,例如&lt;%= nil.fail%&gt;。如果它没有失败则不会重新加载。它可能与您机器上的时间戳有关,开发模式会查看时间戳以查看需要重新加载的内容。

label命令是正确的。我建议您下载Rails BrainRuby Brain,这样您就可以获得文档并直接进行操作。文档说

label(object_name,method,text = nil,options = {})

因为你是一个表单助手(使用块参数f),所以假定了对象名参数。

答案 2 :(得分:1)

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

我遇到了Firefox的这个问题,我必须每隔一段时间重新启动浏览器以查看更改。但是,有一种方法可以告诉Firefox停止缓存内容。查看:Turn off caching

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

The label method采用指定文本的可选参数。

f.label :seat_id_seq

隐式扩展为

f.label :my_model, :seat_id_seq

如果它被指定模型的form_for标记括起来。因此,您需要做的就是在调用中添加text参数。

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

答案 6 :(得分:0)

我从未使用f.label风格的助手,但你所做的似乎是正确的。如果你:

,你可以用一种jankier的方式去做
  1. 自己用HTML编写标签标签:<label for="seat_id_seq">Seat #:</label>
  2. 使用label,如下所示:<%= label 'ticket', 'seat_id_seq', 'Seat #' %>请参阅labellabel_tag
  3. 确保您实际上正在编辑所需的视图。也许您在其他目录中也有编辑,显示等视图。

答案 7 :(得分:0)

我将rails gem降级为2.1.2并且我的代码工作正常。

编辑:显然,Rails跟踪哪些视图文件显示(see an explanation of sorts here)的方式有所改变。在我做了一些试错测试之后我才发现这个链接发现如果我删除了我已经配置Vim自动生成的备份和补丁模式文件,重新启动服务器,我的更改是使用v.2.3.2时拾取。

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