2011-06-10 40 views
1

我有兩個控制器,訂單和任務 - 每個訂單都有很多任務。查找方法相關控制器

在我的訂單顯示視圖中,我列出了訂單的所有相關任務。

我的問題是,我想限制輸出 - 例如。只能用狀態列表任務= 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 %> 

你能幫助新手揮舞:)

回答

1

你真的需要檢查查詢界面中軌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]) 
+0

謝謝你,我真的不知道要尋找什麼! ! Jx – 2011-06-10 15:47:39

+0

jain你好,這工作太棒了,我看過railscasts。從另一個控制器這樣做的最佳方式是什麼?如果我想列出來自訂單的任務,我試過這個:@tasks = Task.where(['status =?AND order_id',false,1])? Jx – 2011-06-11 10:11:48

+0

我的錯誤...需要使用:@tasks = Task.where(['status =?AND order_id =?',false,1]) 愚蠢的我! – 2011-06-11 10:15:46

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 %>