我在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/

10-09 17:59