У меня есть приложение под управлением Rails 2.3.5, для которого в большинстве случаев есть JSON API.
Вошел подрядчик, поработал над приложением и использовал RJS в нескольких местах. Некоторые из тех действий контроллера, которые используют RJS для основного веб-сайта, также должны быть частью API.
Проблема в том, что запросы JSON API вызывают ответы RJS, а это не то, что мне нужно. Я бы хотел, чтобы ответы RJS происходили из браузера, но когда это запрос API (в отличие от использования заголовков "application / json" Accept и Content-Type), я бы хотел, чтобы он просто отправлял ответ API.
Из того, что я могу сказать, Rails запускает ответ RJS для любого MIME-типа, который включает в себя javascript, т.е.
текст / JavaScript
применение / JSON
и т.д.
Есть ли способ заставить RJS отвечать только на текст / javascript? Или есть лучший способ решить эту проблему?
Чтобы было понятнее, у меня есть код, который выглядит следующим образом:
def show
@dashboard = @user.dashboard
respond_to do |wants|
wants.html
wants.json { render :json => @dashboard }
end
end
Проблема в том, что в папке просмотра для этого контроллера также есть шаблон show.rjs. Когда кто-то обращается к API, я хочу, чтобы он отображал результаты json, как я перечислил выше, но вместо этого он отображает шаблон show.rjs.
Как я могу убедиться, что клиенты API получают результаты json, которые я хочу, и при этом позволить шаблону RJS отображаться для людей на сайте?