首先,我是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选项中显示的日期。
有什么想法?我非常感谢你的帮助。
感谢。
汤姆
答案 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!
我希望这会有所帮助。