0

我有这样的网址

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

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

我想要这样的网址

亚利桑那州/unit12
科罗拉多州/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
4

1 回答 1

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

于 2013-08-22T16:30:34.987 回答