我在Rails 3中有一个表单向导。基本上,我创建了一个酒店对象,然后在所有这些操作完成后,我想为该酒店创建一个位置对象。我用于创建酒店的 Controller 代码如下所示:
def create
@hotel = Hotel.new(params[:hotel])
respond_to do |format|
if @hotel.save
@location = Location.new
format.html { redirect_to '/set_location'}
else
format.html { render action: "new" }
end
end
end
然后在“/set_location”页面中,我有一个表格来设置位置。但是,我在html.erb上收到了@location实例变量的
'undefined method model_name for NilClass:Class'
错误。这真的很奇怪,因为当我使用render'/set_location'而不是redirect_to时,它可以正常工作。但是,我想使用redirect_to方法以防止重复记录提交。
在此先感谢您的任何帮助。
最佳答案
HTTP在设计上是无状态的。如果要在请求之间共享状态(重定向导致另一个请求),则应使用session
哈希。像这样:
session[:hotel_id] = @hotel.id
然后您以这种方式在
Hotel
中检索/set_location
:Hotel.find(session[:hotel_id])
关于ruby-on-rails - Rail 3 : instance variable not available after redirection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10104652/