显示Rails 3中不同条目中的变量值



我有一个嵌套的表单。表单是一个名为list的模型,它有一个:name和一个:month属性。该列表模型内部嵌套了另一个名为item的模型,该模型具有:name和:amount属性。一个列表有许多项,一个项属于一个列表。我在我的控制器中创建了一个变量(不确定这是否是最好的方法),它将所有项目的金额加起来,如下所示:

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

我在列表显示页面中调用这个变量,它显示当前列表id的所有项目金额的总和。我想做的是将当前的列表总数与之前输入的列表总数进行比较。有可能使用这样的变量吗?如果有,怎么做?如果不是,我该怎么办?

编辑

在控制器中的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"。想法吗?

您可能应该将此逻辑移动到您的List模型中,并在其中创建total_amount访问器,如:

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

然后在你的控制器中,你只需要将之前的列表加载到@previous_list变量中。

在你的视图中,你可以这样做:

<%= @list.total_amount %>
<%= @previous_list.total_amount %>
伊恩。

来自ipd的答案让我最接近解决方案,下面是我如何根据我的特殊情况完成的:

显示之前的列表总数-列表帮助器:

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

在列表中。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) %>

效果很好!

相关内容

  • 没有找到相关文章

最新更新