我的模型中有以下代码:
attr_accessor :display_time_reader
attr_reader :display_time_reader
使用以下display_time_reader = method:
def display_time_reader=(days_before_start)
self.date_to_show_ad=self.start_time-days_before_start.to_i.days
end
我正在使用以下参数提交:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"wb7acGREdNH2aeuYjye51wwaWdMXgTYvAcNxoDR9HAE=", "sale"=>{"start_time(3i)"=>"13", "start_time(2i)"=>"1", "start_time(1i)"=>"2012", "start_time(4i)"=>"23", "start_time(5i)"=>"00", "end_time(3i)"=>"14", "end_time(2i)"=>"1", "end_time(1i)"=>"2012", "end_time(4i)"=>"01", "end_time(5i)"=>"00", "display_time_reader"=>"7"}, "commit"=>"create"}
但是我收到以下错误:
当你没想到它时,你有一个零对象!你可能有 期待一个Array的实例。评估时发生错误 零.-
控制器代码:
def new
user = User.find(current_user.id)
@sale = user.sales.build
@locations = user.locations
1.times { @sale.items.build; @sale.build_location }
end
def create
@sale = Sale.new(params[:sale])
@sale.user_id = current_user.id
logger.debug "Sale object!!! #{@sale.inspect}"
respond_to do |format|
if @sale.save
format.html { redirect_to @sale, notice: 'Sale was successfully created.' }
format.json { render json: @sale, status: :created, location: @sale }
else
format.html { render action: "new" }
format.json { render json: @sale.errors, status: :unprocessable_entity }
end
end
end
任何可能导致此问题的想法?
答案 0 :(得分:0)
看起来self.start_time
可能是nil
(因此调用方法-
未定义)。你能保证self.start_time
不是nil
吗?
答案 1 :(得分:0)
看起来在尝试减去值之前未设置初始化程序的哈希条目,因此发生了零错误。通过使用before_save
回调来解决此问题,因为这样可以保证每次保存记录时都会计算正确的start_time。