Как реализовать роутинг и связь между моделями?

Вопрос от совсем новичка.
Собственно, есть реализованная модель User со входом и выходом.
Задача : каждому такому User дать возможность создания события ( модель Event) и собственно, отображения на гл. странице у User.
Сама связь вроде понятна : User has many :events, Events belongs_to :user
А как быть с роутингом?
То есть, необходимо чтобы на странице пользователя была кнопка "Create new event", и при переходе перенаправлялся на <>/user/id1/create_event
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
Jeiwan
@Jeiwan
/user/id1/create_event — это не Rails-way. В рельсах уже всё придумано за вас:
resources :users do
  resources :events
end

В общем, обычный вложенный ресурс. Для создания события использовать экшен create контроллера EventsController. Путь будет /users/:id/events, метод POST.
В контролллере EventsController в экшенах события искать через пользователя, т. е. (пример для show):
@user = User.find(params[:id]])
@event = @user.events.find(params[:event_id])

Путь для show будет /users/:id/events/:event_id.
Всё стандартно и обычно. Советую выучить www.rusrails.ru/rails-routing
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kkrieger
Как-то так
resources :user do
    member do 
      get :create_event
    end
end
Ответ написан
@Shetani
resources :user do
   resources :event do
     match :create_event, via: [:get, :post], on: :member
   end
end
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы