2012-06-20 3 views
0

У меня есть книги как ресурс и id, ean, isbn - его свойства. Я хочу, чтобы получить доступ как к books/id/1 или books/isbn/1212100000 или books/ean/1313911Как проложить маршрут к книгам/id/1

В моем routes.rb, я написал следующее.

resources :books do 
     collection do 
      get 'isbn' 
      get 'ean' 
      get 'id' 
     end 
    end 

Но, когда я пытаюсь получить доступ к л ocalhost:3000/books/id/1, это дает .... Нет маршрут соответствует "/books/id/1"

я могу получить доступ localhost:3000/books/id хотя. Это означает, что мне нужно написать отдельное сопоставление в route.rb, но затем, что такое использование объявления ресурса?

Может ли кто-нибудь предложить мне сделать это без написания явных сопоставлений.

ответ

2

Ожидается, что маршруты сбора возвратят несколько результатов, поэтому не имеют параметра id. если вы хотите, идентификатор использования маршрутов членов, например:

resources :books do 
    member do 
     get 'isbn' 
     get 'ean' 
     get 'id' 
    end 
end 
+0

Добавление маршрутов членов также не работает, поскольку оно поддерживает маршруты форматов книг/1/id. Однако мне нужен маршрут книг формата/id/1. –

+0

Затем вы должны использовать совпадение. Но эта схема URL не очень RESTful. – zsquare

+0

Все, что я хочу, - это поиск любой таблицы не только по ее идентификатору, но и по другим атрибутам. но объявление этой таблицы как ресурса не помогает мне это сделать. матч всегда является вариантом, но я бы не хотел его использовать, поскольку я искал некоторые способы сделать это с помощью ресурса. Я просто удивляюсь, если никто никогда не сталкивался с таким требованием? –

-1

Добавить

match ':controller/:action/:id/' 

к вашему routes.rb, ближе к концу.

+0

Зачем вам вводить приложение для чего-то такого простого? – zsquare

+0

Я всегда могу добавить это. Однако вопрос заключается в том, как мне это сделать с помощью ресурса rails? Вопрос очень прост. Как я могу получить атрибуты любой таблицы базы данных с их соответствующими значениями по URL-маршрутам? особенно когда я объявил эту конкретную таблицу как ресурс. –

Смежные вопросы