2016-12-12 3 views
0

У меня есть приложение для работы с двумя типами (не аутентифицированными) пользователями, реферерами и кандидатами.Два разных вида просмотра для остаточного ресурса в рельсах

В настоящее время у меня есть 1 контроллер заданий и модель.

В принципе, я хочу, чтобы иметь два пути:

job/1 # jobs#show for referrers 
j/1 # jobs#show for candidates 

Оба маршрута общественности, есть не зарегистрированные пользователи.

Хотя данные модели (= контент) очень похожи для двух маршрутов, взгляды, очевидно, разные. Я пытаюсь создать два разных представления в одном контроллере.

Я рассмотрел создание отдельного пространства имен (похоже, для всего контроллера), конкретные маршруты получения или настройки отдельного контроллера, но на самом деле не уверен, какой лучший способ «Rails».

Любые предложения были бы очень полезными, спасибо заранее!

ответ

1

В вашем JobsController создайте два разных метода. Скажем

def referrers 
end 

def cadidates 
end 

Теперь в вашем routes.rb добавить вновь созданные методы, как,

get '/j/:id', :to => 'jobs#cadidates' 
get '/job/:id', :to => 'jobs#referrers' 
+0

Спасибо, это именно то, что я хочу, но почему-то это дает мне ошибку сейчас: Отсутствует задание/рефереры шаблонов, приложение/рефереры в 'def find (* args) find_all (* args) .first || raise (MissingTemplate.new (self, * args)) end' - похоже, что это не соответствует правильному @job? – ruby24

+1

@ ruby24, для просмотра должен быть файл шаблона с именем 'referrers.html.erb' и' cadidates.html.erb'. Эти файлы следует поместить в папку 'views/jobs'. – Emu

+1

Огромное вам спасибо, имел опечатку и конфликт с 'resources: jobs' в файле маршрутов. Извини за то, что ты такой! – ruby24

1

Я вижу 2 варианта:

1) Создать отдельное действие в контроллере

def referrers 
end 

def cadidates 
end 

get '/j/:id' => 'jobs#cadidates' 
get '/job/:id' => 'jobs#referrers' 

Это требует двух новых представлений с действиями. В папке представлений заданий добавьте два файла: кандидаты.erb и referrers.erb. Вы можете настроить их для каждого из них.

2) Вы можете вкладывать ресурсы

resources :job do 
    member do 
     get :referrers, :candidates 
    end 
    end 

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

+0

Я пытаюсь использовать 1), но почему-то не знаю, как передать функции #show быть может иметь задание/1, работу/2, работу/3, доступную напрямую, используя отдельные шаблоны referrers.html.erb и candidates.html.erb. Не уверен, как 2) будет работать, учитывая, что у меня нет возможности узнать разницу между рефериром и кандидатом, кроме URL-адреса. Спасибо! – ruby24

Смежные вопросы