Подтвердить что ты не робот

Rails: reply_to JSON и HTML

У меня есть контроллер "UserController", который должен отвечать на обычные и ajax-запросы на http://localhost:3000/user/3.

Когда это обычный запрос, я хочу сделать свое представление. Когда это запрос AJAX, я хочу вернуть JSON.

Правильный подход представляет собой блок respond_to do |format|. Написание JSON прост, но как я могу заставить его отвечать на HTML и просто визуализировать представление как обычно?

  def show
    @user = User.find(params[:id])
    respond_to do |format|
      format.html {
        render :show ????this seems unnecessary. Can it be eliminated??? 
      }
      format.json { 
        render json: @user
      }
    end
  end
4b9b3361

Ответ 1

По моим сведениям, не обязательно "показывать шоу" в формате .html, он автоматически ищет соответствующее представление действия для ex: show.html.erb для запроса html и show, js, erb для запроса JS.

так что это будет работать

respond_to do |format|

  format.html # show.html.erb
  format.json { render json: @user }

 end

Кроме того, вы можете проверить запрос ajax или нет, проверив request.xhr? он возвращает true, если запрос является ajax.

Ответ 2

Да, вы можете изменить его на

respond_to do |format|
  format.html
  format.json { render json: @user }
end