Rails 4.1 nil:NilClass 的未定义方法“usual_start_time”
Rails 4.1 undefined method `usual_start_time' for nil:NilClass
我有一个创建下午 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,而是想用我所在区域的 usual_start_time 字段替换它 table
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:NilClass
提供了未定义的方法 `usual_start_time'
也试过
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
这只是意味着 @area
未在您的控制器中初始化。
在您看来,@area
不是 Area
class 的实例,它是 nil
,并且没有为 [=13 定义 usual_start_time
=].
错误消息表明您的@area 实例变量未在任何地方设置并且返回 nil。
是否要更改 Happening 模型上 started_at 的属性值?如果是这样,您可以在 Happening#create 方法中执行此操作,只需执行 @happening.started_at = 18:45
我有一个创建下午 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,而是想用我所在区域的 usual_start_time 字段替换它 table
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:NilClass
提供了未定义的方法 `usual_start_time'也试过
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
这只是意味着 @area
未在您的控制器中初始化。
@area
不是 Area
class 的实例,它是 nil
,并且没有为 [=13 定义 usual_start_time
=].
错误消息表明您的@area 实例变量未在任何地方设置并且返回 nil。
是否要更改 Happening 模型上 started_at 的属性值?如果是这样,您可以在 Happening#create 方法中执行此操作,只需执行 @happening.started_at = 18:45