Вы можете определить to_param
для вашей модели.Это возвращаемое значение будет использоваться в сгенерированных URL-адресах в качестве идентификатора.
class Thing
def to_param
name
end
end
. Вы можете адаптировать свои маршруты к своему ресурсу следующим образом:
scope "/something" do
resources :things
end
В качестве альтернативы, вы можете такжеприменимо использование подресурсов.
Наконец, вам нужно адаптировать свой контроллер, так как Thing.find(params[:id])
явно не будет работать.
class ThingsController < ApplicationController
def show
@thing = Thing.where(:name => params[:id).first
end
end
Вы, вероятно, хотите убедиться, что name
Ваш Thing
уникален, так как вы будете наблюдать странные вещи, если это не так.
Чтобы избавить вас от необходимости реализовывать все это самостоятельно, вас также может заинтересовать friendly_id , который дает вамэто и некоторые дополнительные действия (например, для использования сгенерированных слагов)