Ruby on rails Rails 4.1未定义的方法`通常的开始时间';零级:零级

Ruby 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,我想用我

我有一个表单,创建默认时间为下午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,我想用我的区域表中通常的开始时间字段来替换它

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