我有一个更新表单,我希望用户在其中更新日期。日期应该总是比数据库中当前的日期更新,所以我希望我的脚本在用户点击提交按钮后验证它。我已经走到了这一步:
<%= 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)]
....
但由于某种原因,提交表单后我无法访问完整的 params[: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
为什么它不起作用以及如何解决我的问题?
谢谢你的帮助。