所以我制作了一个启动页面,并按照post设置了重定向。但它搞砸了应用程序。当我下面的代码到位时,该应用程序不会保存用户提交的电子邮件地址。 (当我注释掉重定向代码时,一切正常。)
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
任何想法我做错了什么?
答案 0 :(得分:2)
嗯,不确定,但是你将@invitation.sender
设置为当前用户,保存后你测试signed_in?
。如果用户未登录,是否无法保存邀请?
编辑:抱歉,监督你说如果删除重定向,一切正常。我认为这个重定向可以防止其他操作做任何事情(顺便说一句,你只能重定向一次)。