2012-05-25 3 views
0

Я пытался в течение последних 2 дней, но в конечном итоге не смог. Я хотел бы получить URL, как это: dresses/type/flower-girl, но все, что я получил это /dresses/type/4Rails Routing: URL-адрес не изменится даже после использования friendly_id gem

У меня Shop has_many Dresses и Type has_many Dresses. В моей таблице Dress у меня есть столбец type_id, ссылка на таблицу Type.

Это мой код:

# Routes file 
resources :dresses 
match '/dresses/type/:id' => 'dresses#type' 

# Type.rb model 
extend FriendlyId 
friendly_id :name, use: :slugged 

# Dresses Controller 
def index 
    @types = Type.all 
end 

def type 
    @dresses = Dress.find_all_by_type_id(params[:id]) 
end 

# View (index.html.erb) 
<% @types.each do |type| %> 
    <%= link_to type.name, :action => "type", :id => type.id %> 
<% end %> 

Я также попытался использовать :name для замены :id на маршрутах, контроллер & вид, но они произвели /dresses/type/Flower%20Girl вместо этого.

Что я сделал не так?

ответ

3

Хорошо, на ваш взгляд, индекс, изменить
<%= link_to type.name, :action => "type", :id => type.id %> к
<%= link_to type.name, :action => "type", :id => type.slug%>

Я полагаю friendly_id не магически поддерживает пользовательские маршруты, так что вы можете закончить тем, что для записей по тихоход вместо идентификатора в вашем контроллер.

+0

Если я переименую все значения в столбце имен с помощью дефиса, тогда дефинированные слова будут отображаться повсюду в моем приложении. Кроме того, столбец slug с драгоценным камнем friendly_id уже позаботился об этом, я просто хочу, чтобы драгоценный камень использовал значения в столбце slug, которые ему не удалось (или, может быть, я испортил маршрутизацию). –

+0

ах, вы можете показать свою миграцию? – rb512

+0

Хоум-шмомей, он работает! Почему я не подумал об этом? Во всяком случае, спасибо человеку. :) –