我在rails app上有一个红宝石。我将date_field添加到视图中以添加/编辑日期。问题是我有保存和更新新日期的问题,但它将日期从变量带到表单(编辑),并在编辑日期和肌酸后新日期。它没有回到主页或有保存问题。正如我在控制台params中看到的,我的日期变量(start)在用户选择新日期时发生了变化,但之后没有加载第一页,我收到了这个错误:
F, [2018-02-01T16:03:44.784113 #723] FATAL -- :
NoMethodError (undefined method `year' for nil:NilClass):
app/controllers/weeks_controller.rb:27:in `create'
这是我的表单页面,其中显示了要编辑的日期:
.form-group
= f.label :course
= @course.name
.form-group.form-inline
= f.label :start
= f.date_field :start, as: :date, value: f.object.try(:strftime,"%m/%d/%Y"), class: 'form-control'
//= f.date_select :start, {}, { :class => "form-control" }
.actions
= f.submit 'Save', :class => "btn btn-primary"
关于控制器的错误说明。但是我没有任何一年的'控制器中的方法:
def create
@week = Week.new(week_params.merge(course_id: @course.id))
respond_to do |format|
if @week.save
format.html { redirect_to '/weeks', notice: 'was successfully created.' }
format.json { render action: 'show', status: :created, location: @week }
else
format.html { render action: 'new' }
format.json { render json: @week.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @week.update(week_params)
format.html { redirect_to '/weeks', notice: 'starting week was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @week.errors, status: :unprocessable_entity }
end
end
end
weeks_params定义如下:
def week_params
params.require(:week).permit(:start, :course_id)
end
我首先遇到使用date_select显示日期的问题,但是现在使用date_field显示了这一点,但我不知道此错误所指的位置。如果有人帮助我,我将感激不尽。
模型是:
class Week < ActiveRecord::Base
belongs_to :course
has_many :assessments
def select_name
start.strftime("Week of %b %d")
end
end