Rails 3 POST重定向GET - 清空GET响应

时间:2011-08-05 15:28:13

标签: ruby-on-rails ruby ruby-on-rails-3

使用Rails 3.0.9,我尝试将帖子重定向到 UserController 中的 创建 方法,Firebug显示POST正确发送,我的create方法执行,POST返回'302'暂时移动。正如预期的那样,GET请求路由到 UserProfileController new 操作, HOWEVER ,没有对GET请求的响应!

我尝试使用其他控制器/操作也具有相同的结果。为什么重定向后的GET请求为空?我究竟做错了什么?对/ users / profile / new的标准请求确实返回了预期的GET响应。

UserController

def create
  @user = User.new(params[:user]) if params[:user]
  logger.debug (params[:user])
  logger.debug @user
  logger.debug @user.valid?
  logger.debug @user.errors

  if(@user.valid?)
    session[:new_user] = @user

    logger.debug "Creating User Profile"
  end

  redirect_to new_user_profile_url  # controller => user_profile, action => new
end

UserProfileController

def new
  @user_profile = UserProfile.new

  # check to see if the new user is in session, if not, then redirect to previous page
  user = session[:new_user]

  logger.debug 'going to right url???'
  logger.debug request.method
  logger.debug request.format
  logger.debug request.headers
  logger.debug request.url

  respond_to do |format|
    format.html
    format.xml { render :xml => @user_profile }
  end
end

服务器日志

Creating User Profile
Redirected to http://localhost:3000/users/profile/new
Completed 302 Found in 325ms


Started GET "/users/profile/new" for 127.0.0.1 at Fri Aug 05 10:38:38 -0500 2011
  Processing by UserProfileController#new as HTML
going to right url???
GET
text/html
http://localhost:3000/users/profile/new
Rendered shared/_trust_reports.haml (45.0ms)
Rendered user_profile/new.haml within layouts/application (590.0ms)
Completed 200 OK in 973ms (Views: 616.0ms | ActiveRecord: 0.0ms)

2 个答案:

答案 0 :(得分:2)

原来这是我自己的错误,我没有意识到我们使用的javascript /主题默认通过ajax提交所有表单。更改默认行为后,它按预期工作,感谢Fabio建议。

答案 1 :(得分:0)

根据该日志文件,服务器已结束其作业并已呈现输出。它可能是您的浏览器的问题(有时firebug和其他开发人员工具锁定浏览器)或者它可能是Web服务器的问题。我假设你正在使用webrick(默认的)。

请使用其他浏览器尝试使用您的代码,如果问题仍在尝试使用不同的rails服务器,则会有很多这样的问题:乘客,独角兽,杂种,瘦身。

通常我使用独立乘客开发,您可以使用gem install passenger进行安装,然后从您的rails根目录运行

passenger start

第一次需要几分钟,因为它会下载nginx独立版,它会编译它。