path helper help

I have a controller:

class HomeController < ApplicationController

def index

end

def about

end

def contact

end

def terms

end

def privacy

end

end

My routes.rb has:

resources :home do

member do

get ‘about’

get ‘contact’

get ‘terms’

get ‘privacy’

end

end

In my application.html.erb I have:

  • About
  • It seems to be expecting an id?

    I’m getting the error:

    No route matches {:action=>"about", :controller=>"home"}
    
    
    
    Rake routes shows:
    
    about_home GET /home/:id/about(.:format) home#about
    

    Maybe it could be a inflection problem:

    “home”.pluralize

    “homes”

    The convention is that a controller is the pluralized name of the model.

    Use “collection” instead “member”
    http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

    Thanks, that worked. Although it doesn’t make sense, it isnt’ a colleciton so I guessed to use member.

    BTW, how could I match this:

    /home/some-name-here

    Where ‘some-name-here’ is the parameter (id), and I want to call home#show

    You can use
    match ‘home/:page’ => ‘home#page’ <<<< before
    resources :home <<<< after

    home_controller

    def page

    use params[:page]

    end
    Rails routes are matched in the order they are specified, so if you have a resources :photos above a get 'photos/poll' the show action’s route for the resources line will be matched before the get line. To fix this, move the get line above the resources line so that it is matched first.

    http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

    You can use

    match ‘home/:page’ => ‘home#page’ <<<< before
    resources :home <<<< after

    this isn’t advisable. home/:page will match home/1

    Not if defined before the resource.

    Not if defined before the resource.

    i’m not saying that it won’t work. i’m saying that it’s not good practice. i would’ve agreed

    with your method if you added constraints to values of the :page parameter.

    hummm… really, I agree with you.