ram*_*z15 6 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
我想redirect_to slider_path在用户提交他们的电子邮件之后.目前,仅显示成功消息而没有重定向.这是代码:
class Splash::SubscribersController < ApplicationController
def create
@subscriber = Subscriber.new(params[:subscriber])
if @subscriber.save
success = true
message = "Success! We'll let you know when we launch."
else
success = false
message = "Fail."
end
respond_to do |format|
format.html {
if success
flash[:success] = message
redirect_to slider_path
else
flash[:error] = message
end
redirect_to root_path
}
format.json { render :json => { :success => success, :message => message }.to_json }
end
end
end
Run Code Online (Sandbox Code Playgroud)
Rails API声明:
操作可能只包含单个渲染或单个重定向.尝试再次尝试将导致DoubleRenderError:
def do_something
redirect_to :action => "elsewhere"
render :action => "overthere" # raises DoubleRenderError
end
Run Code Online (Sandbox Code Playgroud)
如果你需要重定向某事的条件,那么一定要添加"并返回"以停止执行.
def do_something
redirect_to(:action => "elsewhere") and return if monkeys.nil?
render :action => "overthere" # won't be called if monkeys is nil
end
Run Code Online (Sandbox Code Playgroud)
注意使用 and return
只需替换这部分代码:
if success
flash[:success] = message
redirect_to slider_path
else
flash[:error] = message
end
redirect_to root_path
Run Code Online (Sandbox Code Playgroud)
有了这个:
if success
flash[:success] = message
redirect_to slider_path
else
flash[:error] = message
redirect_to root_path
end
Run Code Online (Sandbox Code Playgroud)