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_and_belongs_to_manyから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 

への切り替えを検討し提案します。

人が質問をしたときに私は通常apiを指しませんが、この場合はthe apiは実際に良い情報と例を持っています。

+0

私はそれを試してみましょう。ありがとう! –

+1

確かに、私が上記で追加したAPIリンクも表示されます.papiはかなり読みやすくなっています(多くのapiとは違い!) –

+0

あなたが正しいと思っています。素晴らしいリソース。ありがとう! –

関連する問題