0

まず第一に、HTML と RAILS のコーディングは初めてです。しかし、学習経験の一環として、私が働いているラボ用のマシン予約システムを設計しました。その下に、名前、IP アドレスなどのマシンの詳細を表示するフォーム (show.html.erb) があります。以下に示すように、datetime_select、時間数オプションを含む予約フォームがあり、

ご覧のとおり、これは本当に基本的な html コーディングです。... マシンの詳細 名前: <%= @machine.name %>
IP アドレス: <%= @machine.ipaddress %>
プロセッサ: <%= @machine.processor %>
メモリ: <%= @machine.memory %>
動作中システム: <%= @machine.os %>
説明: <%= @machine.description %>
マシンの状態: <% if @machine.active == true %> オンライン <% else %> オフライン <% end %>
< % if @machine.can_reserved == false %> このマシンは予約できません。 <%終了%>

   <fieldset>
    <legend>Create a New Reservation</legend>
      <p style="color: red"><%= flash[:error] %></p>
      <%= form_for [@machine, @reservation] do |f| %>
          <div class="field"> 
              <%= f.label :startdate, 'Start Time' %>:
              <%= f.datetime_select :startdate %> (<b>PST</b> timezone)
          </div>
          <div class="field">
              <%= f.label :purpose, 'Reason' %>:
              <%= f.text_field :purpose, :size => 40 %>
          </div>
          <div class="field">
              <%= f.label :hour, 'Hour(s)' %>:
              <%= f.text_field :hour, :size => 2 %>
          </div>
          <div class="field">
              <%= f.label :days, 'No of Days' %>:
              <%= f.text_field :days, :size => 2 %>
          </div>
          <div class="actions">
              <%= f.submit 'Reserve this machine' %>
          </div>
      <% end %>
      <br />
      </fieldset>

... これで、マシンの [show action] をクリックすると、すべてが正しく実行されます。すべてのマシンの詳細を表示し、予約フォームに現在の時刻を表示します。しかし、1 分後にページを更新すると、マシンの詳細情報が更新されますが、datetime_select オプションで既に表示されている時刻は変更 (更新) されません。なんで?常に現在の時刻を表示するにはどうすればよいですか? ビューは静的ページに過ぎないことを理解しています。ページ全体を自動的に更新するタグをページに追加しましたが、datetime_select オプションに表示される日付には影響しないようです。

何かご意見は?本当に助かります。

ありがとう。

トム

4

1 に答える 1

0

これにはいくつかの方法がありますが、ここでは 1 つの方法を紹介します。

ルート.rb:

resources :machines do
  resources :reservations
end

これにより、/machines/1/reservations や /machines/1/reservations/new などのパスが生成されます。実行rake routesして、生成されたルートとそのヘルパー メソッド名を表示します。

予約.rb

class Reservation < ActiveRecord::Base
  belongs_to :machine
end

machine.rb

class Machine < ActiveRecord::Base
  has_many :reservations, :dependent => :destroy
end

予約_コントローラー.rb

新しいメソッドを次のように更新します。

def new
  @machine = Machine.find params[:machine_id]
  @reservation = Reservation.new(:machine => @machine)
end

ビュー/予約/_form.html.erb

<%= form_for [:machine, @reservation] do |f| %>
    ... put your machine data stuff here ...
    ... put your form fields here ...
<% end %>

これでうまくいくはずです。概要を説明したルートのセットアップでは、コード内のさまざまな場所にあるルート ヘルパーを更新する必要があることに注意してください。rake routesこれらのルート名などを確認するために使用します。

また、次のようなものを使用して、新しい予約を作成するためのリンクを作成します (おそらくショー マシンのページで?)。

link_to "New Reservation", new_machine_reservation_path(@machine)

もちろん、必要に応じて、予約したいマシンを格納している変数に @machine を置き換えます。

また、reservations_controller#create も更新することを忘れないでください。

これが役立つことを願っています。

于 2011-04-19T18:56:18.740 に答える