2

是否有一个巧妙的解决方案可以在一个地方在 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

4

2 回答 2

2

未知路由重定向到根

routes.rb

match '*path' => redirect('/')

使用上述方法,您可以将所有未知路由重定向到根目录。

于 2013-01-23T11:14:36.103 回答
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
于 2013-01-23T11:12:39.120 回答