I ran into some problem tonight while deploying and I'm trying to get this fixed asap
I have no idea why this is happening. Everything works fine locally but not on heroku. I tried all sorts of different fixes after researching but I may have to resort to renaming this class CommentsController completely (hopefully that works). What is the best way to go about that? I'm pretty new to Rails so I need some help on making these changing correctly.
Here's what the CommentsController looks like FYI:
class CommentsController < ApplicationController
  def new
    @post = Post.new(params[:post])
  end
  def show
    @comment = Comment.find(params[:id])
    respond_to do |format|
      format.js
    end
  end
  def create
    @post = Post.find(params[:post_id])
    @comment = Comment.new(params[:comment])
    @comment.micropost = @post
    @comment.user = current_user
    if @comment.save
      redirect_to(:back)
    else
      render partial: 'shared/_comment_form', locals: { post: @post }
    end
  end
end
Comments are associated to each post (users are able to comment on posts). I will post other codes up as well if needed.
Here's the error from heroku logs
2013-04-09T05:55:19.454545+00:00 app[web.2]: /app/app/controllers/comments_contr
oller.rb:1:in `<top (required)>': superclass mismatch for class CommentsControll
er (TypeError)
Routes.db
SampleApp::Application.routes.draw do
  resources :posts, :path => "posts"
  resources :users do
    resources :messages do
      collection do
        post :delete_selected
      end
    end
  end
  ActiveAdmin.routes(self)
  devise_for :admin_users, ActiveAdmin::Devise.config
  resources :users do
    member do
      get :following, :followers
    end
  end
  resources :sessions, only: [:new, :create, :destroy]
  resources :posts, only: [:create, :destroy]
  resources :relationships, only: [:create, :destroy]
  resources :posts do
    resources :comments
  end
  root to: 'static_pages#home'
  match '/signup',   to: 'users#new'
  match '/signin',   to: 'sessions#new'
  match '/signout',  to: 'sessions#destroy', via: :delete
  match '/post',    to: 'static_pages#post'
  match '/post1',   to: 'static_pages#post1'
  match '/faq',     to: 'static_pages#faq'
  match '/review',  to: 'users#review'
  match "/posts/:id/review" => "posts#review"
end
When I ran advanced indexed search inside the rails app folder, here were the relevant files that came up
- comments_controller.rb
- comments_helper.rb
- comments_helper_spec.rb
- comments_controller_spec.rb
- 3 migration files
- routes.rb (posted above)
- schema.rb (table called "active_admin_comments" and table called "comments')
- post.rb model (has_many :comments)
- user.rb model (has_many :comments)
- comment.rb model
- active_admin.rb in config/initializer (any instance where I find "comments" has been #'ed out")
                I had almost the same issue (server starts correctly, but RSpec fails with the same error). In my case, the problem was in ActiveAdmin (0.6.0). Don't know what exactly, maybe something related to namespacing.
Just downgraded to 0.5.0 On that version, I didn't have any problems with CommentsController.
I'm assuming ActiveAdmin has its own CommentsController that comes from another base class. It only affects running tests, so I just changed my routes to:
unless Rails.env.test?
  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
end
This solution works perfectly well unless you want to test against the routes inside ActiveAdmin..
I had a similar conflict with the admin namespace, as I had a Admin::CommentsController defined within my app.
Try changing the default namespace of ActiveAdmin to something other than 'admin'
config/initializers/active_admin.rb
config.default_namespace = :activeadmin # Default :admin
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With