2015-09-29 5 views
0

Я внедрил базовую тегирование в своем приложении, чтобы сообщения могли быть отфильтрованы по тегам.Правильно установить/сопоставить маршруты в route.rb

Там же маршрут в моем routes.rb для этого

get 'tags/:tag', to: 'links#index', as: :tag 

Однако, я хотел бы иметь URL/теги, в котором перечислены все теги (триггеры указательный действия в контроллере тега).

Я установил этот маршрут до

get 'tags' => 'tags#index' 

С моей точки зрения тегов у меня есть index.html.erb

<% @tags.each do |tag| %> 
    <div class="row"> 
     <%= link_to tag.name, tag_path(tag) %> 
    </div> 
<% end %> 

Проблема заключается в том, что <%= link_to tag.name, tag_path(tag) %> приводит к /tags/:id вместо /tags/:tag и, таким образом, не работает.

Как правильно настроить это?

ответ

1

Добавьте следующий метод to_param к вашей Tag модели:

def to_param 
    name 
end 
+0

Вот и все! Благодаря! – idjuradj

0

Предполагая, что вы пытаетесь соответствовать что-то вроде tags/tag-name с tag-name быть поле, кроме id на Tags; вы можете использовать friendlyId.

+0

Эта строка "получить '/ теги: тег', чтобы: 'ссылки # индекс', как: теге" работает, как это. Когда я нажимаю на тег, названный, например, «test», он принимает меня в ./tags/test. Как сделать эту работу при индексировании тегов? – idjuradj

+0

В вашем контроллере тегов вы найдете тег типа Tag.find_by (name: tag) 'или что-то в этом роде. –