使用范围部分的视图

时间:2011-02-13 21:38:59

标签: ruby-on-rails ruby scope partial-views

我一直在使用示波器来展示一些信息,以显示已经完成并且已经24小时的待办事项

scope :completed, joins(:user).where(:todos => { :complete => true })
scope :logged, completed.where("todos.updated_at <= ?", 1.day.ago)

使用常规待办事项

<%= render @user.todos.logged =>

但是我想在不同的部分_logged.html.erb中显示这些记录的项目。我无法弄清楚将范围结果传递给特定部分的正确方法。

由于

2 个答案:

答案 0 :(得分:7)

好吧,如果你想为每个项目渲染部分,你可以这样做:

<%=render :partial=> 'logged', :collection=>@user.todos.logged %>

或者,如果您想将整个数组传递给一个实例,那么您可以执行

<%=render :partial=> 'logged', :object=>@user.todos.logged %>

在这两种情况下,我猜您的对象将被称为logged

假设您想要为每个项目呈现部分<%= logged.title %>,那么您可以使用第一个版本。

答案 1 :(得分:0)

首先,为了让我的良心保持清洁,请允许我说,将模型代码传递给您的观点绝不是一个好主意。但如果你坚持:

<%= render :partial => 'some_partial',
:locals => {:some_variable => "somevalue",
:some_other_variable => some_other_variable} %>