2013-03-17 2 views
0

У меня есть форма для обновления, где я хочу, чтобы пользователь обновил дату. Дата всегда должна быть NEWER, чем дата, которая в настоящее время находится в базе данных, поэтому я хочу, чтобы мой скрипт проверял ее после того, как пользователь нажал кнопку отправки. Я пришел далеко:rails check complete date_select и time_select param

<%= simple_form_for(calendar, :html => { :method => :put, :name => 'extend_link' }) do |f| %> 

<p>Select the new date (must be newer than the current date): <%= f.date_select :end_at %> at <%= f.time_select :end_at, { :ignore_date => true } %></p> 

<% end %> 

стандартное обновление положить в мой контроллер, обновление календаря модели

def update 
    @calendar = current_user.calendar.find(params[:id]) 

     respond_to do |format| 
     if @calendar.update_attributes(params[:calendar]) 
      format.html { redirect_to calendar_path, notice: 'The end date was extended.' } 
      format.json { head :no_content } 
     end 
     end 

    end 

Я проверил источник после того, как форма была оказана, чтобы понять, как дата и время отбора работ, а также после изучения много, ясно, что дата в настоящее время разделен на несколько частей, прежде чем он «слиты» в моей модели и колонки end_at

calendar[end_at(3i)] 
calendar[end_at(2i)] 
.... 

, но по какой-то причине я не могу получить доступ к полным параметрам [: end_at] после отправки формы. Однако, насколько это возможно, модель может быть обновлена ​​в одном виде? Я сошел с ума.

Это может быть так просто:

if params[:end_at] < @calendar.end_at 
puts "The new ending date is not after the current ending date." 
else 
@calendar.update_attributes(params[:calendar]) 
end 

почему она не работает и как я могу решить мою проблему?

Спасибо за любую помощь.

ответ

0

может сделать это в вашем контроллере, но похоже, что это валидация модели, поэтому я бы поставил ее там. Используйте магию ActiveModel::Dirty, чтобы найти атрибут до и после, возможно, что-то вроде этого:

+0

Perfect. Но мне пришлось перевернуть оператор , чтобы он работал. Теперь это просто отлично :) спасибо! – DonMB

Смежные вопросы