Restful маршрутизация - два пользователя видят разные страницы, которые выполняют одну и ту же функцию - PullRequest
0 голосов
/ 19 апреля 2011

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

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

До сих пор я занимался чем-то вроде index (для компаний) и custindex (для клиентов).Есть ли лучший способ?

Примечание: на этих страницах имеется более пары простых отличий - в противном случае достаточно было бы простых if или case операторов, основанных на типе пользователя.

Ответы [ 3 ]

1 голос
/ 19 апреля 2011

Я бы не касался контроллера и делал это в виде с частями:

#in app/views/users/index.html.erb
<common html, if any>
<%= render :partial => @user.kind #or whatever method you use to distinguis between them %>
<more common html, if any>

Теперь вам просто нужно в этой папке "_customer.html.erb" и частичное "_company.html.erb".

0 голосов
/ 19 апреля 2011

Я не знаю, лучше это или хуже, но у вас также может быть метод под названием «отчеты» на каждом контроллере.Так что он будет обрабатывать каждый из них отдельно.

И так, относитесь к этому в вашем файле маршрутов простым способом.

Просто еще одна идея.

0 голосов
/ 19 апреля 2011

вы можете проверить тип пользователя в вашем контроллере:

def index
  ...
  template = (@type == 'company') ? 'reports/index.html.erb' : 'reports/custindex.html.erb'
  render :template => template
end

означает, что у вас будет два разных файла html.erb, но вы все равно будете иметь одно действие index и визуализировать шаблон в соответствии с типом пользователя

...