Rails路由从URL中删除字符

时间:2013-08-22 15:27:55

标签: ruby-on-rails friendly-id

我有这样的网址

亚利桑那/ AZ12
科罗拉多州/ CO470

我添加了AZ和CO,因为友好的id需要独特的ID。亚利桑那州和科罗拉多州可能有12个单位。

我想要像

这样的网址

亚利桑那/人教版
科罗拉多州/ unit470

好像你可以写一些东西来删除前两个字符并替换它们。那是在路线还是控制器?

我的路线

resources :states, :except => [:index ], :path => '/' do
    resources :units, :except => [:index ], :path => '/'
  end

我的控制器

  def show
    @units = Unit.all
     @states = State.with_units.group('states.id')
        @state = State.all
        @unit = Unit.friendly.find(params[:id])
  end

1 个答案:

答案 0 :(得分:0)

在您的模型上实现to_param方法。 Rails将调用to_param将对象转换为URL的slug。如果你的模型没有定义这个方法,那么它将使用ActiveRecord :: Base中的实现,它只返回id。

class SomeModel
  def to_param
    "unit#{id}"
  end
end

您可以参考https://gist.github.com/agnellvj/1209733例如