私の問題はレールに似ていますが、プロファイルを編集した後にユーザーがサインアウトしますか? しかし、私はサインイン/サインアップにデバイスを使用していません。むしろ、Michael Hartl の railstutorial 章 7-9 からコピーしたコードを使用しています。そして、それは開発でうまく機能します!しかし、Heroku にプッシュすると、ユーザーが編集 (更新) をプロファイルに保存した後、アプリがユーザーをサインアウトします。編集内容はデータベースに正しく保存されます。
ここに github があります: https://github.com/crowdpublishtv/crowdpublishtv
ここに私の users_controller.rb があります:
class UsersController < ApplicationController
before_filter :signed_in_user, only: [:index, :edit, :update]
before_filter :correct_user, only: [:edit, :update]
def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
end
def show
@user = User.find(params[:id])
@books = @user.books
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
end
def blog
@user = User.find(params[:id])
respond_to do |format|
format.html # blog.html.erb
format.json { render json: @user }
end
end
def profileinfo
@user = User.find(params[:id])
respond_to do |format|
format.html # profileinfo.html.erb
format.json { render json: @user }
end
end
def booklist
@user = User.find(params[:id])
@books = @user.books
respond_to do |format|
format.html # booklist.html.erb
format.json { render json: @user }
end
end
def new
@user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user }
end
end
def edit
@user = User.find(params[:id])
@books = @user.books
@book = current_user.books.build if signed_in?
@booklist = Book.where(:user_id => @user.id)
end
def create
@user = User.new(params[:user])
if @user.save
sign_in @user
redirect_to @user
else
render 'new'
end
end
def update
@user = User.find(params[:id])
@booklist = Book.where(:user_id => @user.id)
if @user.update_attributes(params[:user])
sign_in @user
redirect_to @user
else
render 'profileinfo'
end
end
def destroy
@user = User.find(params[:id])
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :ok }
end
end
private
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in."
end
end
def correct_user
@user = User.find(params[:id])
redirect_to(signin_url) unless current_user?(@user)
end
end