我在 Rails 4.1 中 使用 redirect_to 不用再使用 return 了
之前的版本中使用 redirect_to 之后还要再使用 return
现在这个小贴士可以去掉了
楼主说的应该是:
redirect_to info_path, notice: '信息修改成功' and return
我在建新项目的时候,没有 return,发现也没有出问题,当时也在好奇这个事情。
小贴士的那种情况是在 action 中:
def show
if condition?
redirect_to path
end
do_something
render
end
这样会产生二次 render 出错,需要在 redirect_to 后面加上 return。
但是我一般都是这样写:
def show
if condition?
redirect_to path
else
do_something
render
end
end
这样确保每个分支只有一次 render,是没有问题的。
和这个写法类似,写到 filter 里面也没问题,rails 判断在 filter 里面进行过 render,就不会执行后面的 filter 和 action 了。
你看
def test
if true
redirect_to home_path
end
p "You should not see me !"
end
Output
Redirected to http://localhost:3000/my
"You should not see me !"
Completed 302 Found in 6ms (ActiveRecord: 0.7ms)
这就是为啥说 redirect_to != return