我的应用程序表单的编辑视图令人困惑。在某些(但不是全部)实例中,保存在数据库中的event_date
与放入表单上f.datetime_select
字段的event_date
不同。例如,如果我选择" 11月5日"并点击提交并检查我的控制台,edit
读取" 11月11日"。我只与部分实例存在此问题,并且只有new
视图(而不是reminders#edit
视图)。
我的reminders#new
表格代码(与我的<%= form_for @reminder do |f| %>
<div class="row">
<div class="field col-xs-7 col-xs-12">
<%= f.label "Thing to Remember" %>
<%= f.text_field :name, class: "form-control" %>
</div>
<div class="field col-sm-5 col-xs-12">
<%= f.label "Date" %>
<%= f.datetime_select :event_date, class: "form-control" %>
</div>
<div class="field manly-radios col-xs-6">
<%= f.label "Repeat Event?" %><br>
<%= f.radio_button :repeating, "None" %>
<%= f.label :repeating, "No Repeat", value: "None" %><br>
<%= f.radio_button :repeating, "Weekly" %>
<%= f.label :repeating, "Weekly", value: "Weekly" %><br>
<%= f.radio_button :repeating, "Monthly" %>
<%= f.label :repeating, "Monthly", value: "Monthly" %><br>
<%= f.radio_button :repeating, "Yearly" %>
<%= f.label :repeating, "Yearly", value: "Yearly" %><br>
</div>
<div class="field col-xs-6">
<%= f.check_box :gift %>
<%= f.label "Gift required" %><br>
<%= f.check_box :gift_help %>
<%= f.label "Help me find a gift" %><br>
<%= f.check_box :reminder %>
<%= f.label "Please remind me" %>
</div>
</div> <!-- row -->
<div class="row text-center" style="padding-top: 25px">
<%= f.submit "Remind Me", class: "hvr-grow btn btn-manly" %>
</div>
<% end %>
相同,用于记录)如下:
reminders_controller.rb
我edit
的{{1}}方法是这样的:
def edit
@reminder = Reminder.find(params[:id])
@reminder.save
render layout: 'nofooter'
end
有了这些强大的参数:
private
def reminder_params
params.require(:reminder).permit(:name, :user, :event_date, :mail_date, :occasion_type, :reminder, :repeating, :gift, :gift_help)
end
这是我的reminder.rb
型号:
class Reminder < ActiveRecord::Base
belongs_to :user
before_save :create_mail_date
after_save :send_reminder_emails
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
def create_mail_date
@schedule = IceCube::Schedule.new(self.event_date)
case self.repeating
when "Weekly"
@schedule.add_recurrence_rule(
IceCube::Rule.weekly
)
when "Monthly"
@schedule.add_recurrence_rule(
IceCube::Rule.monthly.day_of_month(self.event_date.mon)
)
when "Yearly"
@schedule.add_recurrence_rule(
IceCube::Rule.yearly.day_of_year(self.event_date.yday)
)
end
if self.repeating
self.event_date = @schedule.next_occurrence(Time.current)
end
self.mail_date = self.event_date - 7.days
end
private
def send_reminder_emails
if self.reminder
RemainderMailerJob.set(wait_until: self.mail_date).perform_later(user, remainder)
#ReminderMailer.delay(run_at: self.mail_date).reminder_send(self.user, self)
self.create_mail_date
end
end
handle_asynchronously :send_reminder_emails
end
任何人都可以看到导致这种奇怪行为的原因吗?
答案 0 :(得分:0)
计算下一个日期的月度方法:
...
ga('create', 'YOUR ID', 'auto');
ga('set', 'page', 'http://yourdomain/foo');
ga('set', 'title', 'New Title'); //optional to change title too!
ga('send', 'pageview');
...
引用when "Monthly"
@schedule.add_recurrence_rule(
IceCube::Rule.monthly.day_of_month(self.event_date.mon)
)
引用月份编号,而不是self.event_date.mon
引用该月份的日期。因此,11月的事情被给予11日等等。