Rails API 컨트롤러는 상위 클래스에서 메서드를 상속하지 않습니다.

Arty

내 첫 번째 Rails 프로젝트를위한 API 수행. 모든 API에 대한 기본 클래스 ApiController가 있습니다.

module Api
  class ApiController < ::ApplicationController
    respond_to :json
    skip_before_action :verify_authenticity_token

    def index
      @collection = resource_class.all
      render json: @collection.as_json(as_json_collection)
    end

    private

    def resource_class
      raise NotImplementedError
    end

    def as_json_collection
      {}
    end

  end
end

그리고 자식 클래스 UsersController가 있습니다.

module Api
  class UsersController < ApiController

    private

    def resource_class
      User
    end

    def resource_params
      params.require(:user).permit(:name, :email)
    end
  end
end

내 경로 :

namespace :api do
    resources :users
end

그런 다음 my_app / api / users에 오류가 있습니다.

Api :: UsersController에 대한 'index'작업을 찾을 수 없습니다.

하지만 그런 다음 자체 인덱스 클래스를 작성하는 UsersController를 변경하면 모든 것이 잘 작동하며 모든 사용자가 JSON 형식으로 표시됩니다. 나는 alrady가 두 클래스의 모든 개인 표시에 대해 주석을 달려고 노력했지만 도움이되지 않습니다. 내 프로젝트의 모든 엔터티에 대해 API를 작성하고 싶지 않으며 앞으로이 문제를 피하고 싶습니다.

말린 피어스

이 작업을 수행했습니다.

module Api
  class ApiController < ::ApplicationController

    def index
      respond_to do |format|
        format.json { render json: '"abc"' }
      end
    end
  end
end

module Api
  class UsersController < ApiController
  end
end

URL은 http://localhost:3000/api/users.json

그래서 당신을 위해 제안합니다.

module Api
  class ApiController < ::ApplicationController

    def index
      respond_to do |format|
        format.json do
          @collection = resource_class.all
          render json: @collection.as_json(as_json_collection)
        end
      end
    end
  end
end

module Api
  class UsersController < ApiController
    def resource_class
      User
    end

    def resource_params
      params.require(:user).permit(:name, :email)
    end
  end
end

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

DEPRECATION WARNING을 수정하는 방법 : 클래스 레벨 메소드가 더 이상 Rails 6.1에서 범위를 상속하지 않습니까?

분류에서Dev

컨트롤러의 다른 클래스에서 컨트롤러를 상속하지 않는 Yii2 페이지 제목

분류에서Dev

Rails 4에서 상수 API 컨트롤러를 자동로드 할 수 없습니다.

분류에서Dev

Rails 컨트롤러 내에서 ActiveRecord / ApplicationRecord에서 상속되지 않는 개체를 만들려고했지만 실패했습니다.

분류에서Dev

부모 컨트롤러에서 상속되지 않는 자식 컨트롤러

분류에서Dev

동일한 컨트롤러에서 def를 다른 def에서 상속하는 방법 Rails 4

분류에서Dev

Rails는 Json API를 사용하여 컨트롤러에서 다중 렌더링

분류에서Dev

p : dialog 내부 대화 상자의 버튼이 컨트롤러 메서드를 호출하지 않습니다.

분류에서Dev

p : dialog 내부 대화 상자의 버튼이 컨트롤러 메서드를 호출하지 않습니다.

분류에서Dev

QObject를 상속받은 클래스의 메서드는 호출시 속성으로 식별되며 메서드를 실행하지 않습니다.

분류에서Dev

하나의 컨트롤러에서 둘 이상의 HttpPost 메서드가 Web API에서 작동하지 않음

분류에서Dev

Codeigniter는 항상 하위 도메인 또는 하위 폴더에 기본 컨트롤러를로드합니다.

분류에서Dev

OrientDB에서 Java API에서 한 클래스가 다른 클래스에서 상속되는지 여부를 확인하는 방법은 무엇입니까?

분류에서Dev

다른 Rails 컨트롤러에서 메소드에 액세스하는 방법

분류에서Dev

컨트롤러보기에서 공용 파일에 액세스. Rails는 현재 컨트롤러의 경로를 상대 경로로 간주합니다.

분류에서Dev

Raku rebless는 더 이상 상속 된 클래스에서 작동하지 않습니다.

분류에서Dev

Rails 컨트롤러 상속에 상응하는 Django

분류에서Dev

Qt는 QGraphicsView 신호 (상속되지 않음)의 하위 클래스를 SLOT에 연결할 수 없습니다.

분류에서Dev

웹 페이지에서 링크 버튼 컨트롤을 상속하는 클래스에서 컨트롤 추가

분류에서Dev

Python : 수퍼 클래스에서 상속 된 메서드에서 하위 클래스를 '닫는'방법

분류에서Dev

상속을 사용하여 모델을 바인딩하기 위해 뷰 및 컨트롤러 메서드를 설정하는 방법은 무엇입니까?

분류에서Dev

부모 클래스를 다시 구현하지 않고 부모 클래스에서 상속되는 자식 클래스를위한 인터페이스

분류에서Dev

부모 클래스를 다시 구현하지 않고 부모 클래스에서 상속되는 자식 클래스를위한 인터페이스

분류에서Dev

다른 클래스를 상속받은 클래스에서만 동작하는 메소드

분류에서Dev

상속 된 메서드 (Java)를 호출 할 때 하위 클래스가 수퍼 또는 하위 클래스 메서드를 사용합니까?

분류에서Dev

BaseController 델리게이트가 탭 바 컨트롤러 내의 모든 상속 된 뷰 컨트롤러에서 작동하지 않습니다.

분류에서Dev

대상 컨트롤러에서 클래스의 속성 설정

분류에서Dev

gem에서 컨트롤러 클래스 상속

분류에서Dev

Laravel 5.2에서 컨트롤러 클래스의 단일 상속

Related 관련 기사

  1. 1

    DEPRECATION WARNING을 수정하는 방법 : 클래스 레벨 메소드가 더 이상 Rails 6.1에서 범위를 상속하지 않습니까?

  2. 2

    컨트롤러의 다른 클래스에서 컨트롤러를 상속하지 않는 Yii2 페이지 제목

  3. 3

    Rails 4에서 상수 API 컨트롤러를 자동로드 할 수 없습니다.

  4. 4

    Rails 컨트롤러 내에서 ActiveRecord / ApplicationRecord에서 상속되지 않는 개체를 만들려고했지만 실패했습니다.

  5. 5

    부모 컨트롤러에서 상속되지 않는 자식 컨트롤러

  6. 6

    동일한 컨트롤러에서 def를 다른 def에서 상속하는 방법 Rails 4

  7. 7

    Rails는 Json API를 사용하여 컨트롤러에서 다중 렌더링

  8. 8

    p : dialog 내부 대화 상자의 버튼이 컨트롤러 메서드를 호출하지 않습니다.

  9. 9

    p : dialog 내부 대화 상자의 버튼이 컨트롤러 메서드를 호출하지 않습니다.

  10. 10

    QObject를 상속받은 클래스의 메서드는 호출시 속성으로 식별되며 메서드를 실행하지 않습니다.

  11. 11

    하나의 컨트롤러에서 둘 이상의 HttpPost 메서드가 Web API에서 작동하지 않음

  12. 12

    Codeigniter는 항상 하위 도메인 또는 하위 폴더에 기본 컨트롤러를로드합니다.

  13. 13

    OrientDB에서 Java API에서 한 클래스가 다른 클래스에서 상속되는지 여부를 확인하는 방법은 무엇입니까?

  14. 14

    다른 Rails 컨트롤러에서 메소드에 액세스하는 방법

  15. 15

    컨트롤러보기에서 공용 파일에 액세스. Rails는 현재 컨트롤러의 경로를 상대 경로로 간주합니다.

  16. 16

    Raku rebless는 더 이상 상속 된 클래스에서 작동하지 않습니다.

  17. 17

    Rails 컨트롤러 상속에 상응하는 Django

  18. 18

    Qt는 QGraphicsView 신호 (상속되지 않음)의 하위 클래스를 SLOT에 연결할 수 없습니다.

  19. 19

    웹 페이지에서 링크 버튼 컨트롤을 상속하는 클래스에서 컨트롤 추가

  20. 20

    Python : 수퍼 클래스에서 상속 된 메서드에서 하위 클래스를 '닫는'방법

  21. 21

    상속을 사용하여 모델을 바인딩하기 위해 뷰 및 컨트롤러 메서드를 설정하는 방법은 무엇입니까?

  22. 22

    부모 클래스를 다시 구현하지 않고 부모 클래스에서 상속되는 자식 클래스를위한 인터페이스

  23. 23

    부모 클래스를 다시 구현하지 않고 부모 클래스에서 상속되는 자식 클래스를위한 인터페이스

  24. 24

    다른 클래스를 상속받은 클래스에서만 동작하는 메소드

  25. 25

    상속 된 메서드 (Java)를 호출 할 때 하위 클래스가 수퍼 또는 하위 클래스 메서드를 사용합니까?

  26. 26

    BaseController 델리게이트가 탭 바 컨트롤러 내의 모든 상속 된 뷰 컨트롤러에서 작동하지 않습니다.

  27. 27

    대상 컨트롤러에서 클래스의 속성 설정

  28. 28

    gem에서 컨트롤러 클래스 상속

  29. 29

    Laravel 5.2에서 컨트롤러 클래스의 단일 상속

뜨겁다태그

보관