2012-04-12 1 views
0

Итак, я делаю всплывающую страницу, и я настроил перенаправление на это post. Но это испортило приложение. Когда у меня есть код ниже, приложение не сохраняет адреса электронной почты, отправленные пользователями. (Когда я комментирую код перенаправления, все работает нормально.)рельсы before_filter блокирование метод создания из успешного сохранения

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    include SessionsHelper 

    before_filter(:except => :splash) do 
    redirect_to root_path 
    end 

end 

Вот контроллер. Он основан на Railscast # 124. Таким образом, для страницы всплеска нет входа пользователя, что означает, что после сохранения приглашения он должен сохранять и мигать «Спасибо, мы уведомим, когда мы будем готовы». Но когда фильтр выше на месте, он просто повторно отображает «новый».

class InvitationsController < ApplicationController 

    def new 
    @invitation = Invitation.new 
    end 

    def create 
    @invitation = Invitation.new(params[:invitation]) 
    @invitation.sender = current_user 
    if @invitation.save 
     if signed_in? 
     UserMailer.invitation(@invitation).deliver 
     flash[:notice] = "Thank you, invitation sent." 
     redirect_to hunts_path  
     else 
     flash[:notice] = "Thank you, we will notify when we are ready." 
     redirect_to root_path 
     end 
    else 
     render :action => 'new' 
    end 
    end 

end 

Любые идеи, что я делаю неправильно?

ответ

2

Хм, не уверен, но вы установили @invitation.sender текущему пользователю, а после его сохранения вы проверите для signed_in?. Может быть, приглашение не может быть сохранено, если пользователь не подписан?

Редактировать: Извините, вы сказали, что все работает нормально, если вы удалите перенаправление. Я думаю, что это перенаправление не позволяет другим действиям ничего делать (кстати, вам разрешено только один раз перенаправлять).

+0

Yup. Это была проблема. Позор на рельсах для выполнения именно того, что я сказал. Я закончил тем, что модифицировал фильтр: 'before_filter (: except => [: splash,: create]) сделать redirect_to root_path end' –

 Смежные вопросы

  • Нет связанных вопросов^_^