Finder方法相关控制器

时间:2011-06-10 14:54:03

标签: ruby-on-rails-3

我有两个控制器,订单和任务 - 每个订单都有很多任务。

在我的订单显示视图中,我列出了订单的所有相关任务。

我的问题是我想限制输出 - 例如。仅列出status = 1

的任务

在我的订单控制器中我尝试了这个:

 @tasks = Task.find(:all, :conditions => [:status => '1'])

但是我收到了一个错误:

undefined method `%' for {:status=>"1"}:Hash

我也不知道怎么称呼它。在我的订单显示视图中我尝试了这个:

<% @task.tasks.each do |task| %>
  <li>
    <%= task.title %> <%= task.dueddate %> 
  </li>
<% end %>

你能帮助一个惹人讨厌的新手:)

2 个答案:

答案 0 :(得分:1)

您确实需要检查rails 3中的查询界面

http://railscasts.com/episodes/202-active-record-queries-in-rails-3

http://railscasts.com/episodes/215-advanced-queries-in-rails-3

Btwn你的解决方案是: -

 @tasks = Task.where(['status = ? ', 0])

答案 1 :(得分:0)

我就是这样做的。

任务模型

def Task
    belongs_to :order

    scope :status, lambda { |stat| where(:status => stat) }
end

OrdersController

def show
    @order = Order.find(params[:id])
    @starting_tasks = @order.tasks.status(1).all
end

查看/orders/show.html.erb

<%= @starting_tasks.each do |task| %>
    <li><%= task.title %> <%= task.dueddate %></li>
<% end %>