嗨,我只是想知道为什么会话在刷新时找不到我的预订,并在另一个控制器中使用它。
这是我的应用程序控制器
helper :all # include all helpers, all the time
private
def current_reservation
@reservation ||= Reservation.find(session[:reservation_id]) if session[:reservation_id]
#last assigned value will be returned as default.
end
def create_reservation_session(id)
session[:reservation_id] = id
end
def destroy_reservation_session
session[:reservation_id] = nil
end我想让我们在这里
def new
@book_reservation = BookReservation.new
end
def create
@reservation = current_reservation
@book_reservation=@reservation.build_book_reservation(params[:book_reservation])
if @book_reservation.save
#If success set session
create_reservation_session(@reservation.id)
#redirect_to root_url, :notice => "Successfully created book reservation."
else
render :action => 'new'
end
end它引发undefined methodbuild_book_reservation‘以表示0:NilClass`’error
模型/书籍储备b
belongs_to :reservation模型/储备库
has_one :book_reservation发布于 2012-04-23 11:53:06
错误的原因是您从未设置会话,但尝试访问应用程序控制器使用的it.In。
private
def current_reservation
@reservation ||= Reservation.find(session[:reservation_id]) if session[:reservation_id]
#last assigned value will be returned as default.
end
def create_reservation_session(id)
session[:reservation_id] = id
end
def destroy_reservation_session
session[:reservation_id] = nil
end在你的控制器里
def new
@book_reservation = BookReservation.new
end
def create
@reservation = Reservation.find(params[:reservation_id])
if @reservation
@book_reservation=@reservation.build_book_reservation(params[:book_reservation])
if @book_reservation.save
#If success set session
create_reservation_session(@reservation.id)
#redirect_to root_url, :notice => "Successfully created book reservation."
else
render :action => 'new'
end
else
render :action => 'new'
end然后,无论何时需要,您都可以使用current_reservation。
发布于 2012-04-23 11:28:13
您从来没有将:reservation_id放在会话中。
这意味着session[:reservation_id]是nil,Reservation.find(nil)引发了您正在看到的异常。
https://stackoverflow.com/questions/10279480
复制相似问题