2

그래서 저는 청소부 헌트를 구성하는 작업이있는 프로젝트에서 작업하고 있습니다. 따라서 사용자가 특정 사냥을 클릭하면 show.html.erb 파일에 사냥뿐만 아니라 해당 사냥과 관련된 작업도 표시됩니다. 두 모델 (Hunt.rb 및 Task.rb)에는 "has_and_belongs_to_many"관계가 있습니다. 내 컨트롤러에는 원래이 코드가 있었지만 특정 사냥과 관련된 작업 대신 데이터베이스의 모든 작업을 보여주었습니다.많은 오류가 있고 많은 오류 - * _development.hunts_tasks '가 존재하지 않습니다.

def show 
    @hunt = Hunt.find(params[:id]) 
    @title = @hunt.name 
    @tasks = Task.paginate(:page => params[:page]) 
    end 

그래서 해 보았습니다.

def show 
    @hunt = Hunt.find(params[:id]) 
    @title = @hunt.name  
    @tasks = @hunt.tasks.paginate(:page => params[:page]) 
    end 

그러나 다음이 오류 던졌습니다 : 나는

<h1>Show Hunt</h1> 

    <table> 
     <tr> 
     <td class="main"> 
      <h1> 
      <%= @hunt.name %> 
      </h1> 
      <ul>   
       <% @tasks.each do |task| %> 
       <%= render task %> 
       <% end %> 
      </ul> 
     </td> 
     </tr> 
    </table> 

어떤 아이디어를 엉망으로하고있어 : 여기

ActiveRecord::StatementInvalid in Hunts#show 
    Showing /****/views/hunts/show.html.erb where line #10 raised: 
    Mysql2::Error: Table '***_development.hunts_tasks' doesn't exist: SELECT `tasks`.* FROM `tasks` INNER JOIN `hunts_tasks` ON `tasks`.`id` = `hunts_tasks`.`task_id` WHERE `hunts_tasks`.`hunt_id` = 100 LIMIT 30 OFFSET 0 

는 show.html.erb입니까?

+2

'hunts_tasks' 조인 테이블을 생성 했습니까? –

+1

'hunts_tasks' 테이블을 만들었습니까? 'has_and_belongs_to_many'는 당신이 여전히 관계를 표현할 테이블을 생성 할 것을 요구합니다. 이 경우'hunt_id'와'task_id'를 가진 간단한 테이블 일뿐입니다. [documentation] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_and_belongs_to_many) –

답변

2

나는 당신이 시작하는 더 나은 장소 그래서 더 유연하고 쉽게 장기적으로 사용하는 찾을 수 있습니다 당신이 has_many :through => tbl

class Hunt < ActiveRecord::Base 
    has_many :hunttasks 
    has_many :tasks :through => :hunttasks 
end 

class HuntTask < ActiveRecord::Base 

    belongs_to :hunt 
    belongs_to :task 

class Task < ActiveRecord::Base 
    has_many :hunttasks 
    has_many :hunts :through => :hunttasks 
end 

has_and_belongs_to_many로 전환을 고려하는 것이 좋습니다.

사람들이 질문 할 때 일반적으로 API를 가리 키지 않지만,이 경우 the api에는 실제로 좋은 정보와 예제가 있습니다.

+0

한번 시도해 보겠습니다. 감사! –

+1

확실히 또한 위에 추가 한 api 링크를보십시오. api는 꽤 읽을 수 있습니다 (많은 api와는 다릅니다!) –

+0

당신이 옳은 것은 내가 본 가장 깨끗한 API입니다. 훌륭한 자원. 감사! –

관련 문제