ユーザーがレビューを入力するこのフォームがあります。レビューを保存するには、ユーザーがFacebookで署名されている必要があります。を使用しbefore_filter
て、ユーザーがサインインしているかどうかを確認します。
しかし、私はこのエラーを受け取ります:undefined local variable or method signed_in_user'
。
もう1つは、Facebookでユーザーをログインさせ、レビューを保存するにはどうすればよいですか?失くしてユーザーに同じレビューを再度入力させることなく。
レビューフォーム:
<%= form_for [@school, Review.new] do |f| %>
<%= f.text_area :content %>
<% if current_user %>
<%= f.submit 'Save my review', :class => "btn" %>
<% else %>
<%= f.submit 'Save my review and sign me into facebook', :class => "btn" %>
<% end %>
<%end %>
ReviewsController
class ReviewsController < ApplicationController
before_filter :signed_in_user, only: [:create, :destroy]
def create
@school = School.find(params[:school_id])
@review = @school.reviews.new(params[:review])
@review.user_id = current_user.id
if @review.save
redirect_to @review.school, notice: "Review has been created."
else
render :new
end
end
def new
@school = School.find_by_id(params[:school_id])
@review = Review.new
end
end
ReviewsHelper
module ReviewsHelper
def signed_in?
!current_user.nil?
end
def signed_in_user
unless signed_in?
redirect_to "/auth/facebook"
end
end
end
Facebookからユーザーを認証するためにomniauthを使用しています。