重定向Rails中的所有URL(已知和未知)

时间:2013-01-23 10:31:24

标签: ruby-on-rails

是否有一个简洁的解决方案可以在一个地方在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中的已知和未知重定向?

2 个答案:

答案 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