How to delete a single item here.cant be so hard!

Hi, im new to Ruby on Rails and im trying to do the following

i = 1 @elements = Post.find(:all) @elements.each do |el|   if el.name=="test"     # remove el from @elements   end end

How can i achieve this? i was trying to do el.delete but that is going to delete the element from the database and i just want the element to be removed from current listing. im implementing a search functionality and i want to filter the results from Post.find(:all). In the real app i cant do it by sql. Thanks

Phil

Hi, im new to Ruby on Rails and im trying to do the following

i = 1

@elements = Post.find(:all)

@elements.each do |el|

if el.name==“test”

# remove el from @elements

end

end

How can i achieve this? i was trying to do

el.delete but that is going to delete the element from the database

and i just want the element to be removed from current listing. im

implementing a search functionality and i want to filter the results

from Post.find(:all). In the real app i cant do it by sql.

There’s more than one way. The first one that comes to mind is just the difference of 2 arrays:

@elements = @elements - [el]

#@elements will now equal itself, minus the element that matched ‘test’

@elements = Post.find(:all) @elements.each do |el| if el.name=="test" # remove el from @elements end end

First, it would be more readable for you or another maintainer down the road to write this as

@posts = Post.all @posts.each do |post|

How can i achieve this? i was trying to do el.delete but that is going to delete the element from the database and i just want the element to be removed from current listing.

@posts is an Array; look at the rdoc for methods available.

And finally, you could replace the .each loop with one line:

@posts.delete( Post.find_by_name("test") )

HTH!

Hi, im new to Ruby on Rails and im trying to do the following

i = 1

@elements = Post.find(:all)

@elements.each do |el|

if el.name==“test”

# remove el from @elements

end

end

from http://www.ruby-doc.org/core/classes/Array.html#M000259

@elements.reject! {|el| el.name == ‘test’}