rails datetime_select选项中的rails刷新日期

时间:2011-04-19 17:58:51

标签: ruby-on-rails datetime-select

首先,我是HTML和RAILS编码的新手。但作为学习经验的一部分,我为我正在工作的实验室设计了一个机器预订系统。我有一个表单(show.html.erb)来查看下面的名称,ipaddress等机器详细信息。有一个预约表格,有datetime_select,小时数选项,如下所示,

正如您所看到的那样,它是真正基本的HTML编码。 ...              机器细节            名称:<%= @ machine.name%>
            Ipaddress:<%= @ machine.ipaddress%>
           处理器:<%= @ machine.processor%>
           记忆:<%= @ machine.memory%>
           操作系统:<%= @ machine.os%>
           说明:<%= @ machine.description%>
           机器状态:            <%if @ machine.active == true%>               在线的            <%else%>               离线的            <%end%>           
          <%if @ machine.can_reserved == false%>               本机无法保留。见说明           <%end%>       

   <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时,它会完成所有操作。显示所有机器详细信息,并在预订表单中显示当前时间。但是,当我说一分钟之后刷新页面时,它会刷新机器详细信息,但它不会(刷新)更改已使用datetime_select选项显示的时间。为什么?它怎么能总是显示当前时间?我理解这些观点只不过是静态页面。 我在页面上添加了标签,它会自动刷新整个页面,但似乎不会影响datetime_select选项中显示的日期。

有什么想法?我非常感谢你的帮助。

感谢。

汤姆

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,我将向您展示一种方式:

<强> routes.rb中:

resources :machines do
  resources :reservations
end

这将是/ machines / 1 / reservations和/ machines / 1 / reservations / new等路径。运行rake routes以查看生成的路由及其辅助方法名称。

<强> reservation.rb

class Reservation < ActiveRecord::Base
  belongs_to :machine
end

<强> machine.rb

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

<强> reservations_controller.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!

我希望这会有所帮助。