Rails, несколько методов создания в одном контроллере? - PullRequest
0 голосов
/ 16 декабря 2011

Мне нужно иметь два (или, может быть, даже больше) разных методов создания (и обновления) в одном контроллере. У меня уже есть представления, отображающие формы, поэтому мне нужно только указать submit, какой метод вызывать в контроллере. Это возможно? Если так, то как? Или я могу иметь только один метод create, и этот метод может выполнять разные действия в зависимости от того, какое представление вызвало метод?

Спасибо

Ответы [ 3 ]

0 голосов
/ 25 апреля 2017

Вы можете использовать эту команду:

rails g scaffold_controller 'controller_name'

или если спастический метод вы можете использовать это:

rails генерирует контроллер 'controller_name', добавляет новый

0 голосов
/ 26 апреля 2017

Допустим, у вас есть объект Book. Вы можете изменить значения Book любым способом внутри вашего books_controller.rb, если у этого метода есть доступ к @book.id.

def crazy_create_method
  book.create (book_params)
  book.save
end

Как говорится, попробуйте придерживаться стандартных методов new / create, и если позже вам понадобится что-то странное, всегда легко вызывать код, принадлежащий любому нужному методу. Rails добавляет много стандартных функций в действия REST по умолчанию.

book.title = my_title  
book.save
0 голосов
/ 16 декабря 2011

Игнорирование того факта, что это звучит как действительно ужасная идея, возможно. Вам нужно будет добавить еще несколько маршрутов, которые будут соответствовать новым действиям в вашем контроллере. Вы не сможете называть их «создать» и «обновить», потому что имена методов должны быть уникальными в пределах одного и того же класса.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...