Я не уверен, что понимаю ваш вопрос. (сейчас 3:41 утра)
Из того, что я вижу, вы напрямую получаете доступ к методу auction_id
, вместо использования pike_path(auction, item)
, который будет использовать #to_param
.
Также может произойти сбой для auction/123/item/1
, потому что вы не изменили свой контроллер.
Думаю, было бы полезно описать, как получить рабочих слизней.
Вообще говоря, если вы переопределите #to_param
, идентификаторы больше не будут работать. Это означает, что если вы используете slugs, каждый раз, когда генерируется полиморфный URL (например, link_to object, object
), он передает значение to_param. Стоит отметить, что вы также должны изменить свой контроллер.
Лично я считаю, что лучший способ легко создавать слагов - это использовать permalink_fu от techno-weenie, добавив has_permalink
к вашей модели, а затем переопределить to_param
. Например
class Auction < ActiveRecord::Base
has_permalink :title, :slug
end
при условии, что у вас есть слаг, строковое поле и вы хотите поставить заголовок на слаг.
Вам также необходимо настроить контроллер:
class AuctionsController < ApplicationController
def show
@auction = Auction.find_by_slug(params[:id]) || raise(ActiveRecord::RecordNotFound)
respond_to do |format|
format.html # show.html.erb
end
end
Затем вы можете создавать маршруты в представлениях следующим образом:
link_to @action, @action
Кстати, вы НЕ должны сортировать свои действия в представлении. Лучше всего использовать named_scope
.