9

今夜、展開中に問題が発生しました。これをできるだけ早く修正しようとしています

なぜこれが起こっているのか分かりません。ローカルではすべて正常に動作しますが、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)

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

Rails app フォルダー内で高度なインデックス検索を実行すると、関連ファイルが表示されました。

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

4 に答える 4

3

ActiveAdmin には、別の基本クラスから派生した独自の CommentsController があると想定しています。実行中のテストにのみ影響するため、ルートを次のように変更しました。

unless Rails.env.test?
  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
end

ActiveAdmin 内のルートに対してテストする場合を除き、このソリューションは完全に機能します。

于 2013-05-29T07:20:58.303 に答える
2

Active Admin 0.6.1 の時点で、Active Admin に含まれるコメント モジュールの名前を変更して、独自のコメント モジュールと競合しないようにすることができます。オプションは次のとおりです。

# == Admin Comments
#
# This allows your users to comment on any resource registered with Active Admin.
#
# You can completely disable comments:
# config.allow_comments = false
#
# You can disable the menu item for the comments index page:
# config.show_comments_in_menu = false
#
# You can change the name under which comments are registered:
# config.comments_registration_name = 'AdminComment'
于 2013-12-29T17:39:56.837 に答える