Шаблон проектирования контроллера Rails для My Events - PullRequest
0 голосов
/ 23 сентября 2011

Я хотел бы иметь страницу My_Events, которая отображает только события, на которые подписался текущий пользователь, и позволяет пользователю управлять этими событиями, в дополнение к странице индекса, которая отображает все события в системе.

Как мне поступить так, чтобы соответствовать шаблону RESTful? Должен ли я просто создать действие my_events и my_event.html.erb или создать для него новый контроллер? В чем причина выбора одного подхода вместо другого?

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

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

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  ...
  def events
    @user = User.find params[:id]
    @events = @user.events
  end
end

# config/routes.rb
resources :users do
  member do
    get 'events'
  end
end

Преимущество этого по сравнению с чем-то вроде / events / my_events заключается в том, что URL уникален для представляемых данных. Если пользователь использует ссылку / users / fubar / events, он покажет события для пользователя fubar, где, как и в случае с чем-то вроде / events / my_events, сгенерированная страница привязана к сеансу, а не к URL.

Конечно, это действительно зависит от вашей цели и требований вашего приложения.

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

Вы можете иметь методы в другом контроллере, которые загружают эти События и делают все, что вы хотите / нуждаетесь.Но если вы хотите использовать индекс, редактировать, удалять и создавать новое событие, я бы порекомендовал иметь event_controller, так как в будущем вам будет лучше, если будут добавлены строки и строки кодов.

ЭтоТочка наличия контроллера на модель, когда все заказано.

...