是否有一个简洁的解决方案可以在一个地方在Rails中实现这一目标?(最好是routes.rb
)。现在为了重定向,我已经制作了一个像这样的过滤器:
...
unless [temp_url].include? request.url
redirect_to temp_path
end
此方法适用于已知路线。未知路由将出现404错误。对于未知,可以在routes.rb
:
match "/*other" => redirect("/temp/index")
显然,我们无法访问request
中的routes.rb
个对象。有没有更好的解决方案来涵盖routes.rb
中的已知和未知重定向?
答案 0 :(得分:2)
未知路由重定向到root
routes.rb
match '*path' => redirect('/')
使用上述方法,您可以将所有未知路由重定向到根目录。
答案 1 :(得分:0)
仔细查看before_filter
:
例如,以下代码始终在show,edit,update和destroy端点中调用find_post方法。可以使用相同的逻辑。
class PostsController < ApplicationController
before_filter :find_post, :only => [:show, :edit, :update, :destroy]
def update
@post.update_attributes(params[:post])
end
def destroy
@post.destroy
end
protected
def find_post
@post = current_user.posts.find(params[:id])
end
end