дата обновления рельсов в опции datetime_select - PullRequest
0 голосов
/ 19 апреля 2011

Прежде всего, я новичок в кодировании 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 голосов
/ 19 апреля 2011

Есть несколько способов сделать это, я покажу вам один из способов:

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 также!

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...