Формат зависимых рельсовых маршрутов
Как реализовать следующую маршрутизацию в рельсах:
если запрос требует
html
чем маршрут к конкретному действию, скажем application#indexв случае
json
отформатировать запрос, просто перенаправить к ресурсам к действию, которое производит запрошенныйjson
Очевидно, что это вариант использования для одностраничного приложения, где рельсы в основном используются только для обслуживания json
s. Большинство страниц - просто очень простые макеты с некоторыми загруженными значениями.
Спасибо за подсказки.
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"}