Filtered display

Hello all. I've set up an inventory app and I want to be able to have the index file display ether everything in inventory or only items on order. So I want to populate @spares with the appropriate content then pass it to index.html.erb Is this the right approach? If so how do put logic into the controller to populate @spares ? Any help appreciated! ...Bill

------------spares_controller.rb def index @spares = Spare.find(:all) <--do this to see total inventory @spares = Spare.find(:all, :conditions => ["state = ?", "On Order"]) <--do this to see what's on order ... end

-------------index.html.erb <% for spare in @spares %>   <tr>     <td><%=h spare.name %></td>     <td><%=h spare.partno %></td>     <td><%=h spare.state %></td> ...   </tr> <% end %>

Bill McGuire wrote:

Hello all. I've set up an inventory app and I want to be able to have the index file display ether everything in inventory or only items on order. So I want to populate @spares with the appropriate content then pass it to index.html.erb Is this the right approach? If so how do put logic into the controller to populate @spares ? Any help appreciated! ...Bill

It looks like you're generally going in the right direction. However, you're setting @spares twice, so your view will only see the results of the second #find. It's not really clear to me what effect you're going for here.

I also recommend using named_scope for the "on order" items, if you're using Rails 2.1 or above. They're a bad-ass way to encapsulate common filters on your objects.

http://ryandaigle.com/articles/2008/3/24/what-s-new-in-edge-rails-has-finder-functionality

Jeremy Weiskotten wrote:

Bill McGuire wrote:

Hello all. I've set up an inventory app and I want to be able to have the index file display ether everything in inventory or only items on order. So I want to populate @spares with the appropriate content then pass it to index.html.erb Is this the right approach? If so how do put logic into the controller to populate @spares ? Any help appreciated! ...Bill

It looks like you're generally going in the right direction. However, you're setting @spares twice, so your view will only see the results of the second #find. It's not really clear to me what effect you're going for here.

I also recommend using named_scope for the "on order" items, if you're using Rails 2.1 or above. They're a bad-ass way to encapsulate common filters on your objects.

http://ryandaigle.com/articles/2008/3/24/what-s-new-in-edge-rails-has-finder-functionality

Thanks for the reply Jeremy. I didn't mean to show that I was populating @spares twice, I was looking for a way to populate it one of the two ways depending on what the user wanted to see. I'll take a look at the link you sent, might be the way to go. Thanks again.