Ruby on rails Rails 4.1未定义的方法`通常的开始时间';零级:零级
我有一个表单,创建默认时间为下午6:45。创建新表单时 _form.html.erbRuby on rails Rails 4.1未定义的方法`通常的开始时间';零级:零级,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有一个表单,创建默认时间为下午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,我想用我
= 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,我想用我的区域表中通常的开始时间字段来替换它
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提供了未定义的方法“通常的开始时间”
也试过
time = DateTime.strptime((Date.today + 1.day).to_s + ' ' + **"#{@area.happenings.usual_start_time}"**, '%Y-%m-%d %H:%M')
事件\u controller.rb(要替换“18.45”
这只意味着
@area
未在控制器中初始化
@area
在您的视图中不是area
类的实例,它是nil
,并且没有为nil
定义常规启动时间。错误消息表明@area实例变量没有设置在任何位置,并且返回nil
是否要更改正在发生的模型上started_at的属性值?如果是,可以在正在发生的创建方法中执行此操作,只需执行@oching.started_at=18:45就可以将最后一行(at)oching=oching.new(started_at:time)替换为(at)Area.oching=oching.new(started_at:time)可能。我们在您的问题中没有看到区域和发生的关系。感谢您通过初始化@Area实例变量使其工作。我希望用户在默认情况下看到18:45。当他们创建新表单时。它与“645”一起工作,但希望替换为我的区域表中的字符串“通常的开始时间”(1845!)
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