Rails RESTful URL: все сообщения в определенной категории - PullRequest
2 голосов
/ 29 апреля 2011

В настоящее время я использую мои действия # index для сообщений, чтобы показать все сообщения или filter'em по категориям, если они указаны:

PostsController:

def index
  @posts = Post.all(:order => "created_at DESC")
  @posts = @posts.by_category(params[:category_id]) #Custom named_scope
end

Маршруты:

map.connect '/post/by_category/:category_id', :controller => :posts, :action => :index
map.resources :users

Так / posts вернет все сообщения , а / posts / by_category / 1 вернет все сообщения категории 1

Интересно, есть ли способ сделать это больше RESTful и, возможно, получить несколько симпатичных url_paths.

Я прочитал руководства ( Используя последнюю ветку 2.3 Rails ), но ни вложенные маршруты, ни коллекции не подходили для этого случая. Спасибо:)

1 Ответ

6 голосов
/ 29 апреля 2011
resources :posts
resources :categories do |categories|
  categories.resources :posts
end

Ваши URL тогда:

/posts - все сообщения

/posts/:id - определенный пост

/categories - все категории

/categories/:id - определенная категория

/categories/:id/posts - все сообщения в определенной категории.

...