Где поставить математические вычисления в Rails?
Если вы не знали, это вопрос новичка.
Изучив немного Ruby, я решился на Rails, но натолкнулся на кирпичную стену, когда дело доходит до методов организации. Я создаю что-то, что должно принимать данные / параметры, которые вы получаете, когда кто-то что-то создает, но вместо того, чтобы показывать это, как в твиттере или в блоге, я хочу использовать их как переменные в некоторых математических вычислениях, результаты который я тогда хочу показать.
Теперь в Ruby я бы сделал метод для каждой маленькой математической операции, чтобы убедиться, что они (методы) несут по одной ответственности. В Rails, однако, что я должен делать? Если вы не понимаете мою проблему, я думаю, что это связано с моим непониманием примеров в Rails. Экземпляры в Ruby могут вызывать методы, которые я делаю, но где мне вызвать мои методы (действия?) В Rails?
2 ответа
Вы должны следовать парадигме MVC:
Контроллер должен получить параметры, которые пользователь дал через некоторую HTML-форму.
Затем этот контроллер должен создать экземпляр объекта, который выполняет математические вычисления, а затем контроллер должен отобразить представление, чтобы представить результаты пользователю.
Место, где хранятся контроллер и представления, уже определено платформой:
контроллеры находятся в app/controllers
и мнения в app/views/<controller_name>
Теперь вопрос в том, куда вы помещаете класс, который выполняет вычисления. Вы можете подумать о папке app/ models, но обычно она предназначена для моделей, которые наследуются от ActiveRecord::Base
все те, которые хранятся в базе данных.
Обычно тот класс, который вы реализуете, живет в lib
папка.
Например, у вас может быть следующая структура:
приложение / контроллеры / calculations_controller.rb
def perform_calculations
math_calculator = MathCalculator.new params[:operation]
@result = math_calculator.calculate
end
Библиотека / math_calculator.rb
class MathCalculator
def calculate
# whatever you need to do here
end
end
приложение / просмотров / расчеты / perform_calculations.html.erb
<%= @result %>
Там нет ничего официального, я думаю, что это помогает вам