Как использовать атрибуты записи в URL-адресах с Rails?

Как я могу убедить рельсы использовать для него атрибут записи в URL-адресе в дополнение к идентификатору?

Например, рассмотрим класс Publication с атрибутом pub_date, было бы неплохо иметь такой URL-адрес

 /publications/#{pub_date.year}/#{id}

Хотя я могу использовать to_param для изменения части «id», я, кажется, помню, что создавать параметр с «/» в нем — плохая идея. поэтому, используя что-то вроде

def to_param
  "#{pub_data.year}/#{super}"
end

кажется невыполнимым. Также это кажется невозможным с другими шаблонами URL-адресов, например. если я хочу использовать атрибут в другой части URL-адреса, например:

 /#{pub_date.year}/publications/#{id}

Я могу определить маршруты, которые совпадают, например.

  match "/xxx/:foo/:bar" => "ctrlr#act"

но я не уверен, как я мог бы использовать помощники _url и _path, которые были бы созданы автоматически.


person riffraff    schedule 15.08.2012    source источник
comment
В этом сообщении есть ответ, который вам нужен: заголовок stackoverflow.com/questions/2263488/   -  person Lukas Eklund    schedule 15.08.2012


Ответы (1)


вы можете использовать: как вариант

get "/xxx/:foo/:bar" => "ctrlr#act", :as => :xxx

а потом

xxx_path(:foo => 'asd', :bar => 'qwe') # "/xxx/asd/qwe"
person mikdiet    schedule 15.08.2012
comment
да, но это требует, чтобы я все время явно указывал параметры, когда они уже неявно указаны в значении объекта, я думаю - person riffraff; 15.08.2012