2015-01-30 5 views
0

У меня есть один вопрос с новичком.Ruby on Rails 4 - Передайте ответ от одного контроллера к другому контроллеру

Предположим, у меня есть две модели по названию Project, а другая называется Earning. Проект has_many Заработок.

И в виду «Заработок» я рассчитал общее количество этих Заработок. Можно ли передать ответ от одного контроллера к другому контроллеру, чтобы узнать, какова общая сумма заработка в конкретном проекте. Если да, то как это возможно?

Я не знаю, достаточно ли разъяснений.

+0

да, то вы можете скопировать действие вычисления (где вы вычисленный свои доходы) от вашего earningsController и вставить его в projectsController, затем ссылаться на него в каких-либо действий в новом контроллере. Имеет ли это смысл? –

+1

Возможно, логика расчета должна находиться в модели Earning ** **, а не в контроллере. – jazzytomato

+0

Плохая идея вызвать контроллер с другого контроллера. – nebula

ответ

0

Если вы используете данные модели для расчета total, тогда я бы поместил ее в модель Project вместо контроллера. Таким образом, вы можете рассчитать общую сумму от earnings проекта. Таким образом, вы можете назвать что-то вроде:

@project.total 
+0

Да, вы можете вызвать '@ project.total' в любом представлении. До тех пор, пока '@ project' определяется как объект' Project', и внутри модели 'Project' существует метод' total'. –

+0

И, скажем, результат вычисления в представлении (т. Е. @ Total = 10), могу ли я присвоить этому значению в текущем представлении значение @ project.total, используя <% @ project.total = @ total%> и что будет автоматически сохранено в базе данных или я должен выполнить другую процедуру? – seque90

+0

Вы должны сделать расчет _inside_ методом 'total'. Поэтому, если ваш проект «has_many» заработал, скажите что-то вроде 'self.earnings.sum (&: value)' где 'value' - это поле в вашей базе данных, которое содержит фактическое количество заработка. –

Смежные вопросы