将所有非模型命名的URL重定向到Rails中的命名URL

时间:2013-06-08 19:21:48

标签: ruby-on-rails

我有一个应用程序,我正在覆盖Rails'def to_param方法,以包含模型名称,如:www.myapp.com/1-some-model-name,但是当你转到www.myapp.com/1时,你会得到相同的具有相同内容的页面,但这些是两个不同的URL。什么是进行重定向的最佳方式,以便每当我点击www.myapp.com/1时,我都会转到www.myapp.com/1-some-model-name

谢谢,非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我已尝试找到hereelsewhere的解决方案,但无法使我的应用正常运行。 (我收到错误Error 310 (net::ERR_TOO_MANY_REDIRECTS)

我已经做出了简单的解决方案,但这个解决方案效果很好。

如果您使用to_param,请执行以下操作:

  def to_param
    [id, name.parameterize].join("-")
  end

您只需在控制器上添加一些操作条件,如下所示:

  def show
    @user = User.find(params[:id])
    formal = @user.to_param
    if formal != params[:id]
       # on routes : match "/user/:id" => "users#show", :as => :show_user
       redirect_to show_user_path([@user.id, @user.firstname.parameterize].join("-"))
    end
  end