【发布时间】:2013-06-11 18:04:27
【问题描述】:
在这里,用户通过选择开始日期和结束日期来提交某个时间段的时间表。这些参数被分配给 timesheet_params 然后它被传递给时间表模型。
在构建特定日期的时间表时出现此错误:
开始 GET “/users/2/timesheets/build?start_date=06/08/2013&end_date=06/11/2013” 127.0.0.1 于 2013 年 6 月 11 日星期二 23:24:23 +0530 处理 TimesheetsController#build as / 参数: {"end_date"=>"06/11/2013", "start_date"=>"06/08/2013", "user_id"=>"2"} [1m[36mUser Load (0.1ms)[0m [1mSELECT
users.* FROMusersWHEREusers.id= 2 LIMIT 1[0m Completed 500 Internal Server Error in 3msNoMethodError(未定义方法
stringify_keys' for #<Array:0xb23ed8f4>):app/controllers/timesheets_controller.rb:23:innew' app/controllers/timesheets_controller.rb:23:in `build'
我使用的代码是:
// time sheet build method //
def build
@user = current_user
timesheet_params = params.select{|k,v| ["start_date", "end_date", "user_id"].include?(k) }
@timesheet = Timesheet.new(timesheet_params)
@timesheet.placement = @user.active_assignment
if @timesheet.valid?
if @timesheet.timesheet_days.blank?
build_timesheet_days
end
else
render :status => 500 and return
end
end
【问题讨论】:
-
看起来 timesheet_params 是数组,而 Timesheet.new 要求哈希
-
@tlewin:Ruby 1.8 会发生这种情况,但 1.9+ 不会发生这种情况
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2