我有一个表单,它会创建默认时间为下午6点45分。创建新表单时
_form.html.erb
= f.input :started_at, as: :string, class: 'form-control', input_html: { value: l(@happening.started_at, format: :date_time_picker), class: 'date_time_picker' }, label: "Start at"
但是我没有在我的事件控制器中显示1845,而是想用我的区域表中的ordinary_start_time字段替换它
scheme.rb
create_table "areas", force: :cascade do |t|
t.string "deprecated__default_postcode", limit: 255
t.integer "number_of_runners_needed", default: 100, null: false
t.string "referral_partners_logo_image"
t.integer "address_id"
**t.string "usual_start_time", default: "18:45"**
end
我尝试过使用
time = DateTime.strptime((Date.today + 1.day).to_s + ' ' + **"#{@area.usual_start_time}"**, '%Y-%m-%d %H:%M')
但是它为nil提供了未定义的方法`ordinary_start_time':NilClass
也尝试了
time = DateTime.strptime((Date.today + 1.day).to_s + ' ' + **"#{@area.happenings.usual_start_time}"**, '%Y-%m-%d %H:%M')
happenings_controller.rb(想要替换“18.45”
def new
@type = params[:type].underscore
time = DateTime.strptime((Date.today + 1.day).to_s + ' ' + **"18:45"**, '%Y-%m-%d %H:%M')
@happening = Happening.new(started_at: time)
end
答案 0 :(得分:1)
这只意味着@area
未在您的控制器中初始化。
@area
不是您视图中Area
类的实例,而是nil
,并且usual_start_time
没有定义nil
。
答案 1 :(得分:0)
错误消息表明您的@area实例变量未在任何位置设置,并且返回nil。
您是否要更改Happening模型上的started_at的属性值?如果是这样,你可以在Happening #create方法中做到这一点,并且只做@ happenning.started_at = 18:45