1

私はHead-First Railsから(Safari Online 経由で) チュートリアルを行っていますが、編集した HTML をブラウザーに表示することはできません (つまり、変更です)。具体的には、列の 1 つのラベルを「Seat seq id」から「Seat #」に変更するだけです。edit、index、new、および show.html.erb の 4 つのビュー ファイルを開きました。どこでも「f.label :seat_id_seq」がありますが、「f.label "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: 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

編集 #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 %> を app\views\tickets\new.html.erb の name フィールドの f.label のすぐ上に押し込みましたが、これまでと同じように表示されました。私もIEを使ってみました。すべてが機能しますが、行った変更は表示されません。(3) log\development.log を見つけましたが、何を探しているのかわかりません。多くの処理とレンダリングの行があり、いくつかの移行を示しています。列を追加した移行はビューに表示されません。別のテーブルを作成した移行、そのページが表示されます。

4

8 に答える 8

2

ブラウザのキャッシュだと思います。F5 だけでなく、ctrl-F5 を押してみてください。

ページがレンダリングされたときにログに何が表示されますか?

テンプレートが再ロードされていることを確認したい場合は、エラーが発生しやすいものをテンプレートに入れ、<%= nil.fail %> のような例外画面が表示されるかどうかを確認します。失敗しない場合は、リロードされていません。マシンのタイムスタンプに関係している可能性があります。開発モードはタイムスタンプを見て、何をリロードする必要があるかを確認します。

ラベル コマンドは正しいです。Rails BrainRuby Brainをダウンロードすることをお勧めします。これにより、ドキュメントを手元に置いてすぐに使用できるようになります。ドキュメントによると

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

フォーム ヘルパー (ブロック パラメーター f) にいるため、オブジェクト名パラメーターが想定されます。

于 2009-03-20T20:24:21.003 に答える
2

Rails が開発モードになっていることを確認します。script/server を実行すると、以下の行が表示されますか。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 に答える
1

ブラウザを再起動してみます。Rails アプリでキャッシュを明示的にオンにしない限り、サーバー自体がコンテンツをキャッシュすることはありません。

私は Firefox でこの問題を抱えていました。変更を確認するには、ブラウザを時々再起動する必要がありました。ただし、コンテンツのキャッシュを停止するように Firefox に指示する方法があります。チェックアウト:キャッシュをオフにする

于 2009-03-20T18:49:04.647 に答える
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

最初に確認するのはroutes.rbファイルです。

于 2009-03-20T17:37:04.773 に答える
0

Maybe those pages are cached by rails or your browser?

于 2009-03-20T17:42:01.890 に答える
0

rails gem を 2.1.2 にダウングレードしたところ、コードは正常に動作しました。

編集: どうやら、Rails がどのビュー ファイルを表示するかを追跡する方法に変更があったようです(ソートの説明はこちらを参照してください)。試行錯誤のテストを行った後、そのリンクを見つけただけで、Vim が自動的に作成するように構成したバックアップ ファイルとパッチモード ファイルを削除し、サーバー再起動すると、v. 2.3 の使用中に変更が反映されることがわかりました。 .2.

これらのファイルが作成されないように .vimrc を変更しました (.swp ファイルは問題を引き起こしません)。これらの他のファイルに問題があったのはビューディレクトリだけです。特にコントローラ ディレクトリでテストしたところ、パッチ ファイルの存在に問題はありませんでした。これでビューを変更でき、単純な更新 (F5) ですぐに反映されます。

于 2009-03-20T22:40:58.660 に答える
0

スタイル ヘルパーを使用したことはありませんf.labelが、あなたがしていることは正しいようです。次の場合は、ジャンキーな方法でそれを行うことができます。

  1. HTML で label タグを自分で書きます。<label for="seat_id_seq">Seat #:</label>
  2. 次のように使用labelします: labelおよびlabel_tag<%= label 'ticket', 'seat_id_seq', 'Seat #' %> を参照してください。

必要なビューを実際に編集していることを確認してください。おそらく、他のディレクトリにも編集、表示などのビューがあります。

于 2009-03-20T20:09:38.370 に答える