Rails button_to для непосредственного запуска действия в модели - PullRequest
2 голосов
/ 01 октября 2011

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

Мои вопросы:

  1. Этохорошая идея для вызова метода в модели непосредственно из представления в этом случае?
  2. Если все в порядке, то как мне это сделать, используя button_to?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 01 октября 2011

Нет, пытаться вызвать метод модели напрямую - не очень хорошая идея. Система маршрутизации Rails маршрутизирует на контроллеры, поэтому она просто не будет работать (если вы не хотите выполнять намного больше работы, чем просто написание крошечного контроллера).

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

2 голосов
/ 01 октября 2011
  1. Нет, это не очень хорошая идея.
  2. Не имеет значения, поскольку это не очень хорошая идея.

Вы можете подключить button_to к обновлению действие в EventsController, если модель события имеет состояния или действие destroy , если отмена события означает удаление it.

...