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
On Sat, Feb 19, 2011 at 6:47 PM, Juan manuel V. [email protected]wrote:
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’
On Sat, Feb 19, 2011 at 4:47 PM, Juan manuel V. [email protected]
wrote:
@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!
Hassan S. ------------------------ [email protected]
twitter: @hassan