2013-02-24 32 views
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 .`

如何才能做到這一點?任何想法或解決方案都會很棒!

ReviewForm:

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

     private 
     def signed_in? 
      !current_user.nil? 
     end 

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

回答

1

通常的簡單方法是在重定向到認證服務之前將params保存到會話中。一旦用戶驗證你會檢查這些屬性是否存在並創建評論。

+0

偉大的IDE,你能舉一個例子嗎? – SHUMAcupcake 2013-02-24 22:49:16