Thanks for your tips, I think I will follow your suggestion and create
a new model 'Category', think it will get a lot cleaner.

Thanks.
// Anders

On 9 Okt, 19:37, David Kahn <[email protected]> wrote:
> On Sat, Oct 9, 2010 at 12:17 PM, Anders_P <[email protected]> wrote:
> > Hi!
>
> > Here is what I think it the most relevant part of the home view,
>
> > # Renders the menu
> > <%= render "shared/categories" %>
> > .
> > .
> > .
> > # Renders ads, unless its empty
> > <div class="right_container body_copy">
> >  <% if @ads.empty? %>
> >    Hittade inga annonser.
> >  <% else %>
> >    <%= render @ads %>
> >  <% end %>
> > </div>
>
> > <div class="paginate body_copy">
> >        <%= will_paginate @ads, :previous_label => t(:previous), :next_label
> > => t(:next) %>
> > </div>
>
> > I'm getting "Hittade inga annonser" which means "Couldn't find any
> > ads" when I click on the link, but it shouldn't be empty. It should
> > render all ads that matches a certain condition, for example, :gender
> > => 'female', category => ' accessories'. I have checked the database
> > and it should get two rows.
>
> > It works when I have methods like this:
>
> > def female_accessories
> > �...@ads = Ad.find_all_by_gender_and_category('dam',
> > 'Accessoarer').paginate(:page => params[:page])
> >   @title = "Startsidan"
> >  render 'home'
> > end
>
> > But this isn't very DRY, since I would need to have an action for
>
> > every category. I want something slightly more dynamic.
>
> Right - this is going to be a very ugly controller in no time. But fix the
> problem at hand and then you can play with making it dry. Google the term
> 'named scopes' in google and this may help. If nothing else, move this kind
> of logic into a model, it should not be in a controller. Controller ideally
> just handles requests and routing of them, business logic should be in
> models or other classes.
>
>
>
> > I hope i'm understandable.
>
> > Tips and links regarding ruby-debug would be really nice!
>
> This is probably a good place to pick up ruby debug.
>
> Do this:
> 1) gem install ruby-debug
> (note if you are using Rails 3 and Ruby 1.9.2 you might need: gem install
> ruby-debug19. This is what I am using.)
>
> 2) Now you can put a breakpoint wherever you want by typing 'debugger' where
> you want the execution to stop --- so for example:
>
> def female_accessories
> debugger
> �...@ads = Ad.find_all_by_gender_and_category('dam',
> 'Accessoarer').paginate(:page => params[:page])
> �...@title = "Startsidan"
>  render 'home'
> end
>
> 3) Then restart your rails server:
>
> If Rails 3:
> rails server --debugger
>
> If < Rails 3:
> script/server --debugger
>
> 4) Now execute your page - load the page. The execution will stop when you
> get to the break point. Go to your server console and you should see some
> familiar code and line number. From there you can type in whatever ruby you
> want to debug (like irb). Type 'n' to go to the next line, 'c' to continue.
>
> Using this you should be able to figure out what is going on in your code.
> Great tool to have, I use it often several times a day.
>
>
>
>
>
> > Thanks!
> > // Anders
>
> > On 9 Okt, 18:21, David Kahn <[email protected]> wrote:
> > > On Sat, Oct 9, 2010 at 11:13 AM, Anders_P <[email protected]>
> > wrote:
> > > > Hi! Thanks for your help. But I still doesn't get it to work. I've
> > > > changed the controller action so it looks like:
>
> > > >  def category
> > > >     gender = params[:gender]
> > > >    category = params[:category]
> > > >     @ads = Ad.find_all_by_gender_and_category(gender,
> > > > category).paginate(:page => params[:page])
> > > >   �...@title = "Startsidan"
> > > >    render 'home'
> > > >  end
>
> > > > And in the view:
>
> > > > <li class="li_content"><%= link_to "Accessoarer", :action =>
> > > > 'category', :gender => 'female', :category => 'Accessoarer' %></
> > > > li><br />
>
> > > > When I press the link the url changes to this:
>
> > > >http://localhost:3000/kategori?gender=female&category=Accessoarer
>
> > > > I don't get any errors, but it doesn't find anything. Any idea on what
> > > > might be wrong?
>
> > > So you are rendering the 'home' view - can you show me this? Also,
> > describe
> > > what you are expecting to see. Have you also verified that you are
> > getting
> > > good values on @ads and @title (which I assume you are doing something
> > with
> > > in your view)? I would recommend if you have not used it yet to get
> > familiar
> > > with ruby-debug. This way you can step in to your controller in action
> > and
> > > check these attributes (of course even better is get used to writing
> > tests
> > > for your code, but I know this might be overwhelming at first).
>
> > > Let me know - if you need help with ruby-debug let me know --- if so do
> > give
> > > me the version of Rails and version of Ruby you are running.
>
> > > > // Anders
>
> > > > On 9 Okt, 17:23, David Kahn <[email protected]> wrote:
> > > > > On Sat, Oct 9, 2010 at 7:41 AM, Anders_P <[email protected]>
> > > > wrote:
> > > > > > Hello!
>
> > > > > > I'm trying to create a menu. I have a controller that takes two
> > > > > > attributes, like this:
>
> > > > > > def category(gender, category)
> > > > > > �...@ads = Ad.find_all_by_gender_and_category(gender,
> > > > > > category).paginate(:page => params[:page])
> > > > > > �...@title = "Startsidan"
> > > > > >  render 'home'
> > > > > > end
>
> > > > > Is this your controller code? If so you have issues as (someone
> > correct
> > > > me
> > > > > if this is a new Rails 3 construct that I am clueless) you should not
> > be
> > > > > taking arguments in the signature. If the params gender and category
> > are
> > > > > needed they should be accessed as params[:gender] params[:category].
>
> > > > > So in your view you need something like this below. Also seehttp://
> > > > apidock.com/rails/ActionView/Helpers/UrlHelper/link_tofor info on
> > > > > link_to helper.
>
> > > > > <%= link_to "Accessories", :controller => "categories", :action =>
> > > > "show",
> > > > > :gender => "male", :category => "zzz"
>
> > > > > and then in your controller action
>
> > > > > def show
> > > > >  gender = params[:gender]
> > > > >  category = params[:category]
> > > > > # now do what you want with the data
> > > > > end
>
> > > > > David
>
> > > > > > And in my view I have a list with menu options:
>
> > > > > > <li class="li_content"><%= link_to "Accessoarer", :action =>
> > > > > > "category('dam', 'Accessoarer')" %></li><br />
>
> > > > > > And my routes it look like this:
>
> > > > > > match '/dam-accessoarer',       :to => "pages#category('dam',
> > > > > > 'Accessoarer')"
>
> > > > > > But it doesn't work.
>
> > > > > > I get the following error.
>
> > > > > > Unknown action
>
> > > > > > The action 'category('dam', 'Accessoarer')' could not be found for
> > > > > > PagesController
>
> > > > > > Any help on how to solve it would be greatly appreciated!
>
> > > > > > Thanks!
> > > > > > // Anders
>
> > > > > > --
> > > > > > 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
> > [email protected]
> > > > .
> > > > > > To unsubscribe from this group, send email to
> > > > > > [email protected]<rubyonrails-talk%2Bunsubscrib
> > > > > >  [email protected]><rubyonrails-talk%2Bunsubscrib
> > [email protected]><rubyonrails-talk%2Bunsubscrib
> > > > [email protected]>
> > > > > > .
> > > > > > For more options, visit this group at
> > > > > >http://groups.google.com/group/rubyonrails-talk?hl=en.
>
> > > > --
> > > > 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 [email protected]
> > .
> > > > To unsubscribe from this group, send email to
> > > > [email protected]<rubyonrails-talk%2Bunsubscrib
> > > >  [email protected]><rubyonrails-talk%2Bunsubscrib
> > [email protected]>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/rubyonrails-talk?hl=en.
>
> > --
> > 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 [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<rubyonrails-talk%2Bunsubscrib 
> > [email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/rubyonrails-talk?hl=en.

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to