Хорошо, значит, разные сотрудники разные типы сотрудников, верно? а рабочий один из них?
То, что я, вероятно, хотел бы сделать, это в контроллере вашего персонала, в шоу - где я предполагаю, что вы хотите создать другой шаблон, когда вы смотрите на конкретного человека, у которого есть конкретный тип staff_ - найти сотрудник, а затем посмотрите на их атрибут: staff_type и выполните if или case, чтобы отобразить соответствующее частичное.
def show
@staff = Staff.find(params[:id])
case @staff.staff_type
when "worker"
render :action => "show", :layout => "worker"
else
#other options
end
end
Приведенный выше рендеринг для действия show (передает эти переменные), но с пользовательским макетом с именем worker.
Или вместо рендера, как указано выше, я бы порекомендовал использовать тот же скелет, а затем рендерить разные партиалы для каждого типа персонала, используя этот рендер:
render :partial => "worker", :object => @staff
В этом случае представление будет называться, вероятно, _worker.rhtml
См. Информацию здесь: http://rails.rubyonrails.org/classes/ActionController/Base.html#M000464
Вы можете использовать вышесказанное в любом действии контроллера, действительно. Но вам нужно сделать это в контроллере или реорганизовать ваши ресурсы.