2013-02-24 51 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