«Не было макета по умолчанию для ...» в ответе формата json - PullRequest
3 голосов
/ 30 ноября 2011

Я использовал ответ html и json с классическим respond_to do |format|, но теперь я пытался реализовать загрузку данных xhr, и через некоторое время поиска это было мое решение (с соответствующими шаблонами js и html):

respond_to :html, :js, :json
# GET /messages
def index
  @search = Messages.valid.search(params[:search])
  @messages = @search.paginate(:page => params[:page])
  respond_with(@messages, :layout => !request.xhr?)
end

Ответы html и js работают правильно, но теперь, если я хочу вызвать что-то вроде /messages.json, меня бросает:

ArgumentError in MessagesController#index

There was no default layout for MessagesController in [#<ActionView::FileSystemResolver:0x1064c23c0 @caching=false, @path="/Users/alter/workspace/trilog/app/views", @cached={}>]

Как respond_with обрабатывать такие данныетипы?И что я должен сделать, чтобы получить ответы во всех различных типах форматов?

Заранее спасибо

Обновление

Как появляется здесь Я добавил шаблон index.json.haml с одной строкой =@messages.to_json.html_safe, но я не думаю, что добавление шаблона для типа json будет лучшим решением.Есть идеи?

1 Ответ

0 голосов
/ 30 ноября 2011

Для JSON я просто использую:

respond_to do |f|
    f.json { render json: @messages }
end

Возможно, это не совсем подходит для использования respond_with;то, что в наибольшей степени имеет смысл, может зависеть от того, сколько действий, контроллеров и т. д. необходимо изменить.

Мне будет интересно посмотреть, что повлекут за собой другие ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...