Показать значение переменной из другой записи в Rails 3? - PullRequest
0 голосов
/ 30 апреля 2011

У меня есть вложенная форма. Форма представляет собой модель с именем list, которая имеет атрибуты: name и a: month. Эта модель списка имеет другую модель, вложенную в вызываемый элемент, которая имеет атрибуты: name и: amount. В списке много элементов, и элемент принадлежит списку. Я создал переменную в моем контроллере (не уверен, что это лучший способ), которая суммирует все суммы предметов, как это:

@amount_total = Item.where(:list_id => @list).sum("amount")

Я вызываю эту переменную на моей странице показа списка, и она показывает общую сумму всех элементов для текущего идентификатора списка. То, что я хочу сделать, это иметь возможность сравнить текущий текущий список с ранее введенным списком. Можно ли сделать, используя переменную, как это? Если так, то как? Если нет, что мне делать?

РЕДАКТИРОВАТЬ

В моем действии show в контроллере у меня есть следующее (основываясь на ответе ниже):

    @list = List.find(params[:id])

Но мне нужно создать переменную @previous_list, примерно так:

@previous_list = List.order("id").where("id<? AND user_id=?", self.id, self.user_id).last

Мне нужно найти ранее введенный список, но для того же пользователя. Однако, когда я помещаю переменную таким образом, он говорит, что существует неопределенный метод "user_id". Мысли?

Ответы [ 2 ]

1 голос
/ 30 апреля 2011

Вы, вероятно, должны переместить эту логику в модель List и создать там аксессор total_amount, например:

def total_amount
  Item.where(:list_id => self.id).sum("amount")
end

Тогда в вашем контроллере вам просто нужно загрузить предыдущий список в @previous_listпеременная.

В ваших представлениях вы сможете:

<%= @list.total_amount %>
<%= @previous_list.total_amount %>

ian.

0 голосов
/ 02 мая 2011

Ответ от ipd приблизил меня к решению, и вот как я его завершил для своей конкретной ситуации:

Показать предыдущий список всего - помощник по списку:

def prev_total(list)
list and list.items.sum("amount")
end

В модели list.rb:

def previouslist 
    self.class.order("id").where("id<? AND user_id=?", self.id, self.user_id).last
end

Тогда в моем списке файл show.html.erb:

<%= prev_total(@list.previouslist) %>

Работает просто замечательно!

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