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
Ответы
Ответ 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