В большинстве примеров, которые я вижу, я замечаю, что в контроллере новый метод просто имеет:
@object = Object.new
В методе создания вы увидите что-то вроде:
@object = Object.find(params[:object])
if @object.save
flash[:success] = "This object has been added."
redirect_to objects_path
else
render :action => 'new'
end
Это прекрасно работает, но единственное, с чем я сталкиваюсь (довольно часто), это когда проверки не проходят с использованием некоторых встроенных вспомогательных методов:
validates_presence_of: значение
будет вызвано "render: action => 'new'. Тогда rails обходит контроллер и переходит прямо к действию для new, которое пытается визуализировать форму.
Этот обход контроллера убивает меня, потому что иногда я загружаю значения в форму, используя значения, которые я определил в своем контроллере.
В итоге я получу ошибки из-за нулевых значений, потому что рельсы обошли контроллер, и значения никогда не устанавливались при загрузке "render: action => 'new'".
Мой вопрос: Каков наилучший способ перенаправить форму (или лучшую практику в целом) при проверке формы, в которой назначены переменные, которые определены в контроллере? Я хочу избежать этих ошибок с нулевым значением, поэтому я думаю, что просто делаю это неправильно с самого начала.