2012-01-12 1 views
1

У меня есть контроллер, который через html показывает профиль пользователя, через JSON показывает информацию профиля пользователя hover card w.Рельсы, определяющие тип запроса в контроллере?

class UsersController < ApplicationController 

    def show 
    @user = User.where(:id => params[:id]).first 

    return redirect_to "/" if @user.nil? 

    respond_to do |format| 
     format.html { render :layout => 'application' } 
     format.json { render :json => @user.to_json } 
    end 
    end 
end 

Проблема заключается в том, что пользователь не обнаружил, что он перенаправляет, что отлично работает через HTML, но вызывает ошибки с JSON. Есть ли чистый способ перенаправления, если это HTML-запрос? Каковы правильные рельсы, чистый способ справиться с этим?

Благодаря

ответ

4

Положите чек в обработчике формате, если это не применимо ко всем форматам. Или у вас есть путь, который вы перенаправляете, чтобы вернуть что-то значимое для формата JSON.

Это несколько враждебное пользователю перенаправление без предоставления какой-либо информации о том, почему запрос не прошел - кажется, проблема лучше решена значимым рендерингом, а не перенаправлением для всех форматов.

(. Вам не нужно указывать макет приложения, на самом деле, это по умолчанию)

Разъяснения в ответ на комментарий (я думаю):

блоков для каждого формата просто что: блоки. Они могут содержать произвольный код и т.д .:

respond_to do |format| 
    format.html { @user.nil? ? redirect_to "/" : render } 
    format.json { render :json => @user.to_json } 
end 

Возможно, не самый чистый, частично, потому что я считаю, что это неправильный способ справиться с этим в первую очередь.

+0

не уверен, что я следую как? – AnApprentice

+0

@AnApprentice Не следует чему? –