0

ユーザーが学校のレビューを書くことができるこのアプリがあります。レビューを保存するには、ユーザーは Facebook でサインインする必要があります。

問題:

ユーザーが未署名でレビューを書いた場合、Facebook でサインインすると、同じレビューを再度書く必要があります。

このようにもっと処理したいと思います: unsigned user write a review, signs in with facebook and then the review is saved. But right now the user writes a review and then signs in and nothing is saved, the user have to write the review all over again.`

どうすればこれを行うことができますか?どんなアイデアや解決策も素晴らしいでしょう!

レビューフォーム:

<%= 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 %>

レビューコントローラー:

    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

        private 
        def signed_in?
            !current_user.nil?
        end

        def signed_in_user
            unless signed_in?   
                redirect_to "/auth/facebook"
            end
        end
end
4

2 に答える 2

1

これは、匿名ユーザーを使用するのに適した場所のように思えます。http://railscasts.com/episodes/393-guest-user-recordでゲストユーザーに関するRyanBatesのビデオをチェックしてください。

于 2013-02-24T21:25:27.673 に答える
1

これを行う通常の簡単な方法は、認証サービスにリダイレクトする前に、パラメータをセッションに保存することです。ユーザーが認証したら、それらの属性が存在するかどうかを確認し、レビューを作成します。

于 2013-02-24T22:43:39.333 に答える