Намного проще, чем я ожидал
2 дня спустя
class FoosController < ActiveRecord::Base
# use :except to open `show` action for public js access
before_filter :superuser_required, :except => 'index'
# before_filter does not apply here
def index
@foos = Foo.all
respond_to do |format|
# restrict behavior on html access for superusers
format.html do
superuser_required # functions same as before_filter
end
# unrestricted on js access for public but only shows foo.id and foo.name
format.js do
render :text => @foo.to_json(:only => [:id, :name])
end
end
end
# restricted to superuser per before_filter
def new
@foo = Foo.new
respond_to do |format|
format.html
end
end
# restricted to superuser per before_filter
def show
@foo = Foo.find(params[:id])
respond_to do |format|
format.html
end
end
end
Либо я полностью что-то упустил, когда узнал о respond_to
, либо мой первоначальный вопрос был совершенно бессвязным. Я только что прочитал это снова, и все равно кажется, что это единственный (и самый) подходящий способ решения моей проблемы.
Удивительно, но я не смог найти в Интернете и примеров такого поведения. Ну что ж. Теперь я знаю больше о respond_to
, верно?