Goal: Browse a specific set of database records (the array @features) as a list. Select an item from list (item[3]) to view. On item page (i.e. ./show/3 ) navigate to previous / next item page using generated links. This solution is working for part of the goal: ItemController def list @features = Item.find(:all, :conditions => "featured = 1") end list.rhtml <% for feature in @features -%> <%= link_to(feature.title, {:action => ''show'', :id => feature.id} ) - %> <% end-%> Then I get stuck: ItemController def show ? ? ? ? end show.rhtml <a href="./items/show/<%= ? ? ? ? %>">Previous</a> <a href="./items/show/<%= ? ? ? ? %>">Next</a> Walkthrough: browse to: ./items/list/ (displays the array @ features = [3, 5, 12, 19] ) click the text link "item_5_title" ( @features[1] ) arrive at: ./items/show/5 click the text link "next" *should* arrive at: ./items/show/12 ( @features[3] ) How do I tell the previous / next link where to go? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I''m pretty new at this too, but it sounds like you just want to paginate thru a list with a limit of one item per page. Couldn''t you just use the next/previous links that get generated for the list page and put them on your show page? Can you paginate @features instead of the default paginate :items? I think it uses the id field by default anyways, so it should be able to generate it that way. Am I making any sense? On Mar 1, 7:15 pm, "Rian" <rian.mur...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Goal: Browse a specific set of database records (the array @features) > as a list. Select an item from list (item[3]) to view. On item page > (i.e. ./show/3 ) navigate to previous / next item page using generated > links. > > This solution is working for part of the goal: > > ItemController > def list > @features = Item.find(:all, :conditions => "featured = 1") > end > > list.rhtml > <% for feature in @features -%> > <%= link_to(feature.title, {:action => ''show'', :id => feature.id} ) - > %> > <% end-%> > > Then I get stuck: > > ItemController > def show > ? ? ? ? > end > > show.rhtml > <a href="./items/show/<%= ? ? ? ? %>">Previous</a> > <a href="./items/show/<%= ? ? ? ? %>">Next</a> > > Walkthrough: > browse to: ./items/list/ (displays the array @ features = [3, 5, 12, > 19] ) > click the text link "item_5_title" ( @features[1] ) > arrive at: ./items/show/5 > click the text link "next" > *should* arrive at: ./items/show/12 ( @features[3] ) > > How do I tell the previous / next link where to go?--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks for the suggestions Rick. I am definitely new at this. This is what I am trying as per your suggestion. ItemController def show # Load item by id in order to populate page. @item = Item.find(params[''id'']) # Create array of all items with "featured = 1" @features = Item.find(:all, :conditions => "featured = 1") @feature_pages, @features = paginate(:features, :per_page => 1) end show.rhtml <%= link_to(''Previous'', { :page => @feature_pages.current.previous }) -%> <%= link_to(''Next'', { :page => @feature_pages.current.next }) - %> When I try to load a page ( ./items/show/3 ) in the browser I am getting an error. NameError in PortfolioController#try uninitialized constant Feature I tired initializing feature as an array ( @features = [] ) n my controller to no avail. Where am I messing this up? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 3/5/07, Rian <rian.murnen-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Thanks for the suggestions Rick. I am definitely new at this. > > This is what I am trying as per your suggestion. >This is what I''m doing in a app I''m working on (I changed my model name to "feature" to match yours). I have a "number" field associated with each record, and use that for the order. Change to suit. In the controller''s Show method: @feature = Feature.find(params[:id]) @previous = Feature.find(:first, :order => "number desc", :conditions => ["number < ?", @feature.number]) @next = Feature.find(:first, :order => "number", :conditions => ["number > ?", @feature.number]) In the show.rhtml file: <p><%= link_to(''Previous'', feature_path(@previous)) unless @previous.blank? %> | <%= link_to(''Next'', feature_path(@next)) unless @next.blank? %></p> HTH, jt --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
John, I think (and may be wrong), but the situation I am working from is slightly different from where you started. My model is not "Feature". My model is "Item" and has an associated field named "featured" that accepts 1 or 0 (yes or no). I am guessing your suggested "number" field accepts any number and acts as a mechanism to sequence the featured items, basically it is an additional unique identifier (although not the primary key). I am instead using feature as a concept referring to a subset of Items which have the attribute "featured = 1". I only mention this, because I cannot simple "change to suit" since our setup is different. I am new to ruby, so please excuse my misinterpretation if your code does in fact fit my circumstance. If you would explain a little further how @previous and @next are working in the controller it might help me see the direction your guiding me towards. Also, in the view code you provided, what does "feature_path" call? Is it calling all the code you provided in the controller show method? I am missing what "feature_path" calls. I appreciate your help. Thank you. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---