2012-02-10 3 views
2

私のRails 3アプリでは何らかの理由で登録プロセスが302になっています。具体的には、新しいユーザーの作成からプロフィールの編集にリダイレクトすると、アプリから/loginにリダイレクトされます。これは、Herokuでのみ発生します。アプリをローカルで実行すると、それは正常に機能します。完了302 Rails 3で見つかったHerokuでの登録プロセス

ここに私のheroku logsです:

users_controller.rb
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 [email protected] (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"=>"[email protected]", "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 

routes.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 

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

私は私のログを見ればそう、私は提出していますPOST/users、送信電子メールを受信し、profiles_controller.rbeditアクションにリダイレクトします。だから、すべてが正しいはずだが、私はリダイレクトされているようだ。誰もこれも彼らに起こったのですか?

UPDATE:私のprofiles_controller.rb:私のsessions_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 

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" 
+0

あなたの 'profiles#edit'アクションは何をしますか?多分あなたはリダイレクトをやっているこれの前のフィルターか何かを持っていますか? – phoet

+0

私の 'profiles#edit'アクションをアップデートとして追加しました。私は 'sessions_controller'を追加しました。以前はそれを含めて申し訳ありません。これは前に働いていましたが、私はこれが間違っていた可能性があるかどうかわからない、多くの変更を加えました。 – tvalent2

+0

'before_filter:authenticate'や他のフィルタの前にあなたが困っていると思います。 – phoet

答えて

1

@phoetは、私は、コードを削除し始め、上記で示唆したようにそれw潜在的な問題を引き起こしていると私は私の解決策につながった方法のエラーがありませんでした。私は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  

へ:私はからそれを変更し、私もこの302は、問題を発見しました

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 
+0

ありがとう! –

0

、それは使用してコントローラ間でresolved-

私の場合は

私がアクセスしていた方法を得る方法を見ますAJAX呼び出し、別のコントローラ私は要求を認証するためにdeviseメソッドとしてauthorize_resourceを追加しました。

次に、特定のメソッドskip_authorize_resource:only =>:name_of_method(Action)をスキップしました。

問題を解決します。

ありがとうございました。

関連する問題