Формат зависимых рельсовых маршрутов

Как реализовать следующую маршрутизацию в рельсах:

  • если запрос требует htmlчем маршрут к конкретному действию, скажем application#index

  • в случае json отформатировать запрос, просто перенаправить к ресурсам к действию, которое производит запрошенный json

Очевидно, что это вариант использования для одностраничного приложения, где рельсы в основном используются только для обслуживания jsons. Большинство страниц - просто очень простые макеты с некоторыми загруженными значениями.

Спасибо за подсказки.

1 ответ

Способ решения этой проблемы в Rails может быть обработан в контроллере одним действием. В файле маршрутов вы просто объявите ресурс:

resources :posts

И контроллер будет выглядеть так:

def index
  @posts = Post.all

  respond_to do |format|
    format.html  # index.html.erb
    format.json  { render :json => @posts }
  end
end

Как видите, тип ответа зависит от запрашиваемого типа.

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

match 'posts/:id.:format' => 'posts#html_respond', :constraints => {:format => "html"}
match 'posts/:id.:format' => 'posts#json_respond', :constraints => {:format => "json"}
Другие вопросы по тегам