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.

I hope i'm understandable.

Tips and links regarding ruby-debug would be really nice!

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]>
> > > > .
> > > > 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