Question

I want to change the

  def url_after_create
    '/'
  end

of UsersController in Clearance. If I do this:

class UsersController < Clearance::UsersController

  protected

  def url_after_create
    '/dashboard'
  end


end

When I'm trying to sign up a new user, which works perfectly when not overriding, I get the following: The action 'index' could not be found for UsersController -- The action (post) is to '/users' and it seems that since the index action is not defined it fails. What should I do?

EDIT: Added code of Clearance::UsersController

class Clearance::UsersController < ApplicationController
  unloadable

  skip_before_filter :authorize,   :only => [:new, :create]
  before_filter :redirect_to_root, :only => [:new, :create], :if => :signed_in?

  def new
    @user = ::User.new(params[:user])
    render :template => 'users/new'
  end

  def create
    @user = ::User.new(params[:user])
    if @user.save
      sign_in(@user)
      redirect_back_or(url_after_create)
    else
      flash_failure_after_create
      render :template => 'users/new'
    end
  end

  private

  def flash_failure_after_create
    flash.now[:notice] = translate(:bad_email_or_password,
      :scope   => [:clearance, :controllers, :passwords],
      :default => "Must be a valid email address. Password can't be blank.")
      end

  def url_after_create
    '/'
  end
end
Was it helpful?

Solution

This line match ':controller(/:action(/:id(.:format)))' located in routes was causing the trouble. Commenting that solved it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top