gpt4 book ai didi

ruby-on-rails-3 - 仅在Heroku上完成302在Rails 3中的注册过程

转载 作者:行者123 更新时间:2023-12-05 01:28:33 25 4
gpt4 key购买 nike

在我的Rails 3应用程序中,由于某种原因,我在注册过程中收到302。具体来说,当我从创建新用户重定向到编辑其个人资料时,我从应用程序重定向到/login。这仅在Heroku上发生。如果我在本地运行该应用程序,则它将正常运行。

这是我的heroku logs

2012-02-10T02:22:05+00:00 app[web.1]: Started POST "/users" for 98.218.231.113 at     2012-02-10 02:22:05 +0000
2012-02-10T02:22:05+00:00 app[web.1]:
2012-02-10T02:22:05+00:00 app[web.1]:
2012-02-10T02:22:06+00:00 app[web.1]: Processing by UsersController#create as HTML
2012-02-10T02:22:06+00:00 app[web.1]: [paperclip] Saving attachments.
2012-02-10T02:22:06+00:00 app[web.1]: Rendered user_mailer/registration_confirmation.text.erb (0.4ms)
2012-02-10T02:22:06+00:00 app[web.1]: Completed 302 Found in 964ms
2012-02-10T02:22:06+00:00 app[web.1]: Sent mail to andy@dundermifflin.com (694ms)
2012-02-10T02:22:06+00:00 heroku[router]: POST myapp.org/users dyno=web.1 queue=0 wait=0ms service=984ms status=302 bytes=97
2012-02-10T02:22:06+00:00 app[web.1]: Redirected to http://myapp.org/signup/join
2012-02-10T02:22:06+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"4PjdAx5aaSph3KBDQfiPlJTlvTsh+DDTF1x+S7Ol2jc=", "user"=>{"profile_attributes"=>{"first_name"=>"Andrew", "last_name"=>"Bernard", "bio"=>""}, "email"=>"andy@dundermifflin.com", "password"=>"[FILTERED]"}, "commit"=>"Sign Up For myapp"}
2012-02-10T02:22:06+00:00 app[web.1]: Rendered user_mailer/registration_confirmation.html.erb (0.6ms)
2012-02-10T02:22:06+00:00 app[web.1]:
2012-02-10T02:22:06+00:00 heroku[nginx]: 98.218.231.113 - - [10/Feb/ 2012:02:22:06 +0000] "POST /users HTTP/1.1" 302 97 "http://myapp.org/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10" myapp.org
2012-02-10T02:22:06+00:00 app[web.1]: Started GET "/signup/join" for 98.218.231.113 at 2012-02-10 02:22:06 +0000
2012-02-10T02:22:06+00:00 app[web.1]:
2012-02-10T02:22:06+00:00 app[web.1]:
2012-02-10T02:22:06+00:00 heroku[router]: GET myapp.org/signup/join dyno=web.1 queue=0 wait=0ms service=29ms status=302 bytes=91
2012-02-10T02:22:06+00:00 app[web.1]: Processing by ProfilesController#edit as HTML
2012-02-10T02:22:06+00:00 app[web.1]: Redirected to http://myapp.org/login
2012-02-10T02:22:06+00:00 app[web.1]: Completed 302 Found in 12ms
2012-02-10T02:22:06+00:00 heroku[nginx]: 98.218.231.113 - - [10/Feb/ 2012:02:22:06 +0000] "GET /signup/join HTTP/1.1" 302 91 "http://myapp.org/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10" myapp.org
2012-02-10T02:22:06+00:00 app[web.1]:
2012-02-10T02:22:06+00:00 app[web.1]:
2012-02-10T02:22:06+00:00 app[web.1]: Started GET "/login" for 98.218.231.113 at 2012-02-10 02:22:06 +0000
2012-02-10T02:22:06+00:00 app[web.1]: Processing by SessionsController#new as HTML
2012-02-10T02:22:06+00:00 app[web.1]: Rendered layouts/_footer.html.erb (0.6ms)
2012-02-10T02:22:06+00:00 heroku[router]: GET myapp.org/login dyno=web.1 queue=0 wait=0ms service=27ms status=200 bytes=3062


在我的 users_controller.rb中:

def create
@user = User.new(params[:user])
if @user.save
session[:user_id] = @user.id
redirect_to join_path, :notice => 'User successfully added.'
UserMailer.registration_confirmation(@user).deliver
else
render :action => 'new'
end
end


在我的 routes.rb中:

match "/signup/join" => "profiles#edit", :as => 'join'


因此,如果查看日志,我将向 POST提交 /users,发送电子邮件,并重定向到 edit中的 profiles_controller.rb操作。因此,似乎一切都应该正确,但我正在重定向。有人也发生过这种情况吗?

更新:在我的 profiles_controller.rb中:

class ProfilesController < ApplicationController
before_filter :authenticate, :only => [:edit, :update]
layout "application", :except => [:edit, :show]

def user
@user = current_user
end

def edit
@profile = user.profile
render :layout => "join_form"
end


在我的 sessions_controller.rb中:

class SessionsController < ApplicationController  
def new
end

def create
if user = User.authenticate(params[:email].downcase, params[:password])
session[:user_id] = user.id
cookies.permanent[:auth_token] = user.auth_token
if user.profile.higher_ed?
redirect_to user.profile, :notice => "Logged in successfully"
else
redirect_to join_path, :notice => "Logged in successfully"
end
else
flash.now[:alert] = "Invalid login/password. Try again!"
render :action => 'new'
end
end


我的 gemfile

source "http://rubygems.org"
gem "aws-s3", :require => "aws/s3"
gem "aws-sdk"
gem "cancan"
gem "cocaine"
gem "fastercsv"
gem "nifty-generators"
gem "jquery-rails", ">= 1.0.12"
gem "paperclip"
gem "rails", "3.0.5"
gem "rake", "0.9.2"
gem "ransack"
gem "twitter"
gem "mocha", :group => :test
group :production, :development, :test do
gem "pg"
end
gem "pg"

最佳答案

正如@phoet上面建议的那样,我开始删除可能导致问题的代码,并且出现无方法错误,这导致我找到了解决方案。我必须重新编写current_user方法中的逻辑。我将其更改为:

def current_user
return unless session[:user_id]
@current_user ||= User.find_by_id(session[:user_id])
@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
end


至:

def current_user
@current_user ||= lookup_user
end

def lookup_user
if cookies[:auth_token]
User.find_by_auth_token!(cookies[:auth_token])
elsif session[:user_id]
User.find_by_id(session[:user_id])
end
end

关于ruby-on-rails-3 - 仅在Heroku上完成302在Rails 3中的注册过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com