ruby-on-rails - 类 CommentsController 的父类(super class)不匹配(TypeError),重命名的最佳方法?

标签 ruby-on-rails ruby ruby-on-rails-3 model-view-controller

我今晚在部署时遇到了一些问题,我正在努力尽快解决这个问题

我不知道为什么会这样。在本地一切正常,但在 heroku 上却不行。我在研究后尝试了各种不同的修复方法,但我可能不得不求助于完全重命名此类 CommentsController(希望能奏效)。最好的方法是什么?我是 Rails 的新手,所以我需要一些帮助来正确地进行这些更改。

这是 CommentsController 的样子,仅供引用:

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

评论与每个帖子相关联(用户可以对帖子发表评论)。如果需要,我也会发布其他代码。

这是来自 heroku 日志的错误

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)

路由.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

当我在 Rails 应用程序文件夹中运行高级索引搜索时,出现了以下相关文件

- 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")

最佳答案

我遇到了几乎相同的问题(服务器正常启动,但 RSpec 失败并出现相同的错误)。 就我而言,问题出在 ActiveAdmin (0.6.0) 中。不知 Prop 体是什么,也许与命名空间有关。

刚刚降级到 0.5.0 在那个版本上,我对 CommentsController 没有任何问题。

关于ruby-on-rails - 类 CommentsController 的父类(super class)不匹配(TypeError),重命名的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15894417/

相关文章:

javascript - 如果内容未显示,则停止 javascript 执行

ruby-on-rails-3 - 无法运行 cap deploy :setup on ec2, 任务 `deploy:setup' 不存在

javascript - Fineuploader 在用户响应文件提交后取消上传

sql - rails query hstore where key IS NOT something 或不存在

css - 将 Chartkick 折线图设置为正方形

ruby-on-rails - 回形针 - 按图像比例进行条件裁剪

ruby-on-rails - 安装发动机的 RSpec 测试路线

ruby-on-rails - 如何在不调用 Rails 范围 lambda 的情况下访问它?

ruby-on-rails - .rb 文件中的 Ruby 类

ruby-on-rails - 带有label_tag的check_box_tag点击操作