我有两个控制器,订单和任务 - 每个订单都有很多任务。
在我的订单显示视图中,我列出了订单的所有相关任务。
我的问题是我想限制输出 - 例如。仅列出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 %>
你能帮助一个惹人讨厌的新手:)
答案 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 %>