Tag Search Showing, Best Method

First, please allow me to say I am very new to Rails and Ruby in general. I have only been working with it... For about one month. I've read every book and watched every screencast I could find on the subject and as a result I am finally nearing the end of my first rail app that will be going out live. But as you might guess, I'm having a problem.

Being so new I'm a bit lost when it comes where code should go at times and how exactly to handle RESTful resources.

Using the somewhat standard analogy of a blog, I have at the moment three models and controllers. users, user_sessions, and posts (and the controllers there of, ie, user_controller)

I am using acts_as_taggable_on (for tagging), authlogic (user login behavior), mandraka-aegis(user roles) and white_list ( sanitation of html from user's post).

I have tagging working. Giving the relative complexities of tagging, I thought it would be a lot harder. However now, I want users to be able to 'click' on a tag for a given post and find all posts with matching tags. Now this is a trival thing, I can find them all easily however my issue is that I do not know how to display this list of posts RESTfully.

I know this will likely seem obvious to the senior members here but for me, it's not a question I can seem to come up with an answer for. Should I create another new controller by itself to handle an Index or Show action of the list? A model and a controller? add a new non-REST custom method to the Post controller? Should I just recode the Post controller to handle either single or multiple post displays? What is the best method for redirecting to a list of these posts RESTfully?

I apologize ahead of time if this is a stupid question and a waste of your time but it has me stumped. Thank you for your time.

Darian

I find fretting alot over whether or not one's app conforms for RESTful "standards" really really misses the point. BUT typical RESTful guidelines say that a "show" request displays one of the requested resources, while "index" displays many of the requested resource. Sounds here that users are requesting many posts filtered by given tags, so *I'd* just check the appropriate query parameters in your PostsController's index action and go from there.

However I don't really spend my day's pondering the principles of REST so I may be completely off base here.

What I decided to do was to move .tagged_width to the model and reuse the index with a slight tweak

in this manner:

# Posts_Controller   def index     #If the tags param is present, do by tags, if not, do all     if params[:tags]       @posts = Post.paginated_tag_search(params[:tags], params[:page])       @tags = params[:tags]     else       @posts = Post.paginated_all(params[:page])       @tags = nil     end   end

# Post_Model   ## Find all with matching tags and paginate them   def self.paginated_tag_search(search, page)     options = {       :order => 'created_at DESC',       :page => page,       :per_page => 25     }     Post.tagged_with(search, :include => [:tags, :user]).paginate (options)   end

  ## Find ALL And Paginate them   def self.paginated_all(page)     options = {       :order => 'created_at DESC',       :page => page,       :per_page => 25     }     Post.find(:all, :include => [:tags, :user]).paginate(options)   end