Forum: Ruby on Rails Some routes stopped working

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5b0473d73eff5c3e9a07b43e79e93076?d=identicon&s=25 Bryan (Guest)
on 2009-01-12 16:27
(Received via mailing list)
I'm relatively new to Rails, so the solution to this might be more
trivial than I think However, I am working on an app, and everything
was working fine until just recently. The problem is I'm not sure
*when* I might have screwed up, hence my not knowing where the problem
lies.

I'm running Rails 2.1.2

All routes in routes.rb were working fine, but for some reason, a few
stopped working.  Here is my routes code:

---------------
ActionController::Routing::Routes.draw do |map|
  # See how all your routes lay out with "rake routes"
  map.connect '', :controller => 'site'

  map.resources :questions, :has_many => [:replies], :collection =>
{:search => :get}
  map.resources :passwords
  map.resources :users, :has_one => [:password], :has_many =>
[:replies]
  map.resource :session
  map.resources :beta_invitations


  map.new_contact '/contact/new', :controller => 'contact', :action =>
'new', :conditions => { :method => :get }
  map.contact '/contact', :controller => 'contact', :action =>
'new', :conditions => { :method => :get }
  map.contact '/contact', :controller => 'contact', :action =>
'create', :conditions => { :method => :post }

  map.home ':action', :controller => 'site'
  map.signup '/signup', :controller => 'users', :action => 'new'
  map.signin  '/signin', :controller => 'sessions', :action =>
'create'
  map.signout '/signout', :controller => 'sessions', :action =>
'destroy'
  map.questions '/questions', :controller => 'site', :action =>
'questions'
  map.privacy '/privacy', :controller => 'site', :action =>
'privacy_policy'
  map.terms '/terms', :controller => 'site', :action =>
'terms_of_service'
  map.about '/about', :controller => 'site', :action => 'about'
  map.graphs '/graphs', :controller => 'graphs', :action => 'stats'

  # Install the default routes as the lowest priority.
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'

  # Custom handle 404/500 errors
  map.notfound '*args', :controller => 'site', :action => 'custom404'

end
--------------

Just recently, the signup, signout, privacy, and terms paths stopped
working.  The controllers and models seem to be as they were before
they stopped working and the files names haven't changed, so I'm not
sure where to fix the problem.

If more is needed to assess the problem, please let me know.  Thanks!
80e4cb97cae5c8d745f72337d93fd8f2?d=identicon&s=25 MaD (Guest)
on 2009-01-12 16:45
(Received via mailing list)
> All routes in routes.rb were working fine, but for some reason, a few
> stopped working.

do you have any error-messages? what did you call? what do you get?
5b0473d73eff5c3e9a07b43e79e93076?d=identicon&s=25 Bryan (Guest)
on 2009-01-12 21:52
(Received via mailing list)
Thanks for the reply. This is what's in the log:

LOG

Processing SiteController#signup (for 127.0.0.1 at 2009-01-12
15:41:17) [GET]
  Session ID:
BAh7BzoMY3NyZl9pZCIlYjUzYTM5Yjk4ZmY4ZGQwMzM0YmFkZWIzYzM1MTc2
MjMiCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhh
c2h7AAY6CkB1c2VkewA=--9a211b8e03c1b16513a196e3fb3f3c468f12bca9
  Parameters: {"action"=>"signup", "controller"=>"site"}


ActionController::UnknownAction (No action responded to signup):
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/filters.rb:579:in `call_filters'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/filters.rb:572:in `perform_action_without_benchmark'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/benchmarking.rb:68:in
`perform_action_without_rescue'
    C:/INSTAN~1/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/benchmarking.rb:68:in
`perform_action_without_rescue'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/rescue.rb:201:in `perform_action_without_caching'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/caching/sql_cache.rb:13:in `perform_action'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/
active_record/connection_adapters/abstract/query_cache.rb:33:in
`cache'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/
active_record/query_cache.rb:8:in `cache'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/caching/sql_cache.rb:12:in `perform_action'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/base.rb:529:in `send'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/base.rb:529:in `process_without_filters'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/filters.rb:568:in
`process_without_session_management_support'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/session_management.rb:130:in `process'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/base.rb:389:in `process'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/dispatcher.rb:149:in `handle_request'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/dispatcher.rb:107:in `dispatch'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/dispatcher.rb:104:in `synchronize'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/dispatcher.rb:104:in `dispatch'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/dispatcher.rb:120:in `dispatch_cgi'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/dispatcher.rb:35:in `dispatch'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/rails.rb:76:in `process'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/rails.rb:74:in `synchronize'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/rails.rb:74:in `process'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:159:in `process_client'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:158:in `each'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:158:in `process_client'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:285:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:285:in `initialize'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:285:in `new'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:285:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:268:in `initialize'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:268:in `new'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel.rb:268:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/configurator.rb:282:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/configurator.rb:281:in `each'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/configurator.rb:281:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/mongrel_rails:128:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/../lib/mongrel/command.rb:212:in `run'
    C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/
bin/mongrel_rails:281
    C:/INSTAN~1/ruby/bin/mongrel_rails:19:in `load'
    C:/INSTAN~1/ruby/bin/mongrel_rails:19

Rendering C:/INSTAN~1/ruby/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/
action_controller/templates/rescues/layout.erb (not_found)


User CONTROLLER:

class UsersController < ApplicationController
  before_filter :login_from_cookie
  before_filter :login_required, :only => [:edit, :update]

  # GETs should be safe (see
http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [:create], :redirect_to =>
{ :controller => :site }
  verify :method => :put, :only => [:update], :redirect_to =>
{ :controller => :site }

  # GET /question/1
  # Show user's questions
  def show
    @user = User.find_by_login(params[:id])

    @questions = @user.questions.paginate(:page => params
[:page], :per_page => 10, :conditions => "NOT anonymous")

    respond_to do |format|
      format.html # show.html.erb
    end
  end

  # GET /users/new
  def new
  end

  # POST /users
  # Signup a new user
  def create
    cookies.delete :auth_token
    # protects against session fixation attacks, wreaks havoc with
    # request forgery protection.
    # uncomment at your own risk
    # reset_session

    @user = User.new(params[:user])
    @user.gender = params[:user][:gender].to_i
    @user.birthdate = Date.new(params[:date]['birth_year'].to_i, params
[:date]['birth_month'].to_i, params[:date]['birth_day'].to_i)
    @user.country = params[:user][:country]

    # Validate the beta invitation code.
    if REQUIRE_INVITE_TO_SIGNUP
      beta_verify = Digest::MD5.hexdigest("asecretkeygoeshere"+params
[:user][:email])
      unless params[:invitation_code] == beta_verify
        flash[:notice] = "The invitation code you used is not valid."
        render :action => 'new'
        return
      end
    end

    if verify_recaptcha(@user) && @user.save
      self.current_user = @user

      # Create the user's stats table
      stat = Stat.new(:user_id => @user.id)

      if stat.save
        # Send the new user welcome email
        UserNotifier.deliver_signup_notification(@user)

        redirect_to home_path
      else
        @user.destroy
        stat.destroy unless stat.nil?
        flash[:error] = "Your account couldn't be created"
        render :action => 'new'
      end
    else
      render :action => 'new'
    end
  end

  # GET /users/1/edit
  # Changing username, email, or profile
  def edit
    # @user = User.find(params[:id])
    @user = current_user
  end

  # PUT /users/1
  # Changing username, email, or profile
  def update
    # @user = User.find(params[:id])
    @user = current_user

    @user.attributes = params[:user]
    @user.gender = params[:user][:gender].to_i
    @user.birthdate = Date.new(params[:date]['birth_year'].to_i, params
[:date]['birth_month'].to_i, params[:date]['birth_day'].to_i)
    @user.country = params[:user][:country]

    respond_to do |format|
      if @user.save
        format.html { redirect_to home_path }
      else
        format.html { render :action => 'edit' }
      end
    end
  end

end

link_to from VIEW

<%= link_to image_tag("signup1.png"), signup_path %>



The others are similar.  I've been trying out different plugins as
well. Could that have caused this problem? Thanks.
5cabbcab339feace80762194dc9302ed?d=identicon&s=25 Christoph Jasinski (Guest)
on 2009-01-12 22:26
(Received via mailing list)
Well I'm a RoR newbie but what I see is the following:

1) Error Message:
somebody called /site/signup (right?)
but your controller (site) doesn't have such an action. Here your
would have to define one.
The actions you have definied in your site controller are
- new
- show
- update
- create
- edit

2) Routes
But you route signup the following way
map.signup '/signup', :controller => 'users', :action => 'new'

It seems to me that there is some inconsistency.

I hope I was some help ;)
5b0473d73eff5c3e9a07b43e79e93076?d=identicon&s=25 Bryan (Guest)
on 2009-01-12 22:47
(Received via mailing list)
This is the users controller that I included on the last post, not the
site controller. However, the site controller is as follows:

class SiteController < ApplicationController
  caches_page :terms_of_service, :privacy_policy, :about, :custom404
  before_filter :login_from_cookie

  def index
    # If a user is logged in, only show questions they haven't
answered

    if logged_in?
      @questions = Question.paginate(:page => params[:page],
                                      :per_page => 20,
                                      :conditions => ["NOT EXISTS
(SELECT id FROM replies WHERE (replies.user_id = ?) AND
(replies.question_id = questions.id))", current_user.id],
                                      :include => :user,
                                      :order => 'questions.created_at
DESC')
    else
      @questions = Question.paginate(:page => params[:page],
                                     :per_page => 15,
                                     :include => :user,
                                     :order => 'questions.created_at
DESC')
    end

    respond_to do |format|
      format.html
    end
  end

  def terms_of_service
    respond_to do |format|
      format.html
    end
  end

  def privacy_policy
    respond_to do |format|
      format.html
    end
  end

  def about
    respond_to do |format|
      format.html
    end
  end

  def custom404
    render :partial => "custom404", :layout => "application", :status
=> "404"
  end
end


On Jan 12, 4:25 pm, "Christoph Jasinski"
5b0473d73eff5c3e9a07b43e79e93076?d=identicon&s=25 Bryan (Guest)
on 2009-01-12 22:55
(Received via mailing list)
Problem solved, I'm just an idiot
This topic is locked and can not be replied to.