【Rails】 시야 파일을 사용하지 않고 파라미터 ID도 존재하지 않는 상황에서 관련 데이터를 얻는다.[API 모드용]
개시하다
비망록입니다.
여기, 홈 화면("/")에서
「データ全件」  「1つのデータに関連付けされているデータの総数」  「1つのデータに関連付けされているハッシュのデータ」  예를 들어, Qita 등의 애플리케이션을 만드는 경우
「記事全件」  「1つの記事に関連付けされているコメントの総数」  「1つの記事に関連付けされているタグのハッシュデータ」  全てのデータはハッシュとして取得します。컨디션
Ruby: 2.6
Rails: 5.2
모형의 예(제작과정 생략)
 코드
1. 먼저 모든 기사 확보
def index
  @all_article = Article.all
end
2.1 한 문장과 관련된 주석의 총수 얻기
def index
  @all_article = Article.all
  # [ { 1: "コメント数" }, { 2: "コメント数"  }, ... ]という形のデータを作成する。
  # article.commentsでループ処理した記事データからコメントを呼び出している。
  @article_count = @all_article.map{ |article| 
    [article.id, article.comments.count.to_s]  #もしコメント数を表示させるならto_sで文字列化する。
  }.to_h 
  # 上記のコメントデータのidと記事のidが一致した場合に、コメント数をcount属性に格納する
  @article_count.map do |key, value|
    @all_article.map do |article|
      if article.id === key
        article["count"] = value
      end
    end
  end
  # => [ { "id": 1, "count": "コメント数" }, { "id": 2, "コメント数" }, ... ]のように得られる
end
3.1 한 문장과 관련된 라벨의 해시 데이터 가져오기(위와 대체적으로 같다)
def index
  # 記事全件
  @all_article = Article.all
  # コメント数
  @article_count = @all_article.map{ |article| 
    [article.id, article.comments.count.to_s]
  }.to_h 
  @article_count.map do |key, value|
    @all_article.map do |article|
      if article.id === key
        article["count"] = value
      end
    end
  end
  # 1つの記事が所有するタグをハッシュで取得
  @all_article.map{ |article|
    [article.id, article.article_tags.all]
  }.to_h
  # => { 
  #      "1": [
  #         { "id": 1, "tag_name": "Rails" }, 
  #         { "id": 2, "tag_name": "React" }, 
  #          ... ,
  #      ], 
  #      "2": [ 
  #         { "id": 1, "tag_name": "JavaScript" }, 
  #         { "id": 2, "tag_name": "Qiita" }, 
  #          ... ,
  #      ]
  #     }
end
위에서 말한 바와 같이 위의 상태를 유지하면 컨트롤러가 엉망이 될 수 있기 때문에 모델 파일에서 실례적인 방법으로 추출하는 것이 좋다고 생각합니다.최후
백엔드와 프런트엔드를 분리하여 SPA 애플리케이션을 만들 때 관찰시야 파일을 사용하지 않기 때문에 루트 URL이 있는 홈 화면에서 관련 데이터를 얻는 방법을 찾기 어렵습니다.
그리고 결국 이런 결론을 얻었지만 틀리거나 더 좋은 방법이 있다면 꼭 알려주세요. 감사합니다!🙇♂️
Reference
이 문제에 관하여(【Rails】 시야 파일을 사용하지 않고 파라미터 ID도 존재하지 않는 상황에서 관련 데이터를 얻는다.[API 모드용]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kurawo___D/items/ab6efe4b164bb7e7eaec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)