как перенаправить в пользовательский HTML-файл - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть ссылка, которую я хочу, чтобы пользователи нажимали, и она перейдет в пользовательский вид (new.worker.html.erb) внутри объекта отсутствий. Как мне это сделать?

У меня в настоящее время есть ссылка на метод внутри моего контроллера, называемый render, который проверяет сеанс пользователя на тип staff_type, чтобы решить, куда следует перенаправить пользователя на

edit: как указано в комментариях комментаторовэто вызвать соответствующий контроллер для вашего представления в вашем link_to, а затем выполнить проверку правильности рендеринга внутри контроллера следующим образом:

   if session[:user].staff_type == 3
        render "new_worker"

, которая указывает на представление new_worker внутри соответствующего представления

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

Хорошо, значит, разные сотрудники разные типы сотрудников, верно? а рабочий один из них?

То, что я, вероятно, хотел бы сделать, это в контроллере вашего персонала, в шоу - где я предполагаю, что вы хотите создать другой шаблон, когда вы смотрите на конкретного человека, у которого есть конкретный тип 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

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

0 голосов
/ 23 ноября 2011

Непонятно, дайте нам немного больше информации, что такое отсутствие, тип персонала, работник?у вас есть маршрут, ресурс и контроллер для всех этих вещей, связаны ли они через отношения?

Основной ответ будет таким: Для рельсов, для рендеринга шаблона вам нужен контроллер и маршрут для доступа кконтроллер.тогда быстрый redirect_to new_worker_path должен работать

РЕДАКТИРОВАТЬ: маршруты указывают на действия, которые отображают представления (или другие ответы http, такие как redirect_to).

Rails (я предполагаю, что у вас 2.3.11), это REST, ресурсно-ориентированная структура.ИМХО, вы должны сохранить это и перенаправить на new_absence_path, если вы хотите иметь другой шаблон для staff_type, вы можете добавить аргумент к вашей ссылке :type=>'worker' и использовать его в своем контроллере для визуализации определенного шаблона.

не лучший способ практики, это создать маршрут и действие.для рельсов 2.3.11

map.resources :staff, :member => {:new_worker => :get}

затем определите в контроллере своего персонала:

def new_worker
  ...
  render 'new.worker'
end
...