1

インデックス ページのパーシャル内で belongs_to モデルを正しく繰り返すのに苦労しています。

クラス:

class Chapter < ActiveRecord::Base
  attr_accessible :name, :chapter_num,
  belongs_to :chapter
  #fields: :id, :name, :chapter_num
end

class County < ActiveRecord::Base
  attr_accessible :name, :county_num, :chapter_id
  has_many :counties
  #fields: :id, :name, :county_num, :chapter_id
end

class ChaptersController < ApplicationController
  def index
    @chapters = Chapter.all
    @counties = County.all(:joins => :chapter, :select => "counties.*, chapters.id")
  end
end

アプリ/ビュー/チャプター/index.html.erb:

<h1>Chapter Index</h1>
  <%= render @chapters %>
<br />
<%= link_to "Add a new Chapter", new_chapter_path, class: "btn btn-large btn-primary" %>

app/views/chapters/_chapter.html.erb:

<div class="row">
  <div class="span5 offset1"><h4><%= link_to chapter.name, edit_chapter_path(chapter.id) %></h4></div>
  <div class="span2"><h4><%= chapter.chapter_num %></h4></div>
</div>
<!-- here's where the problem starts -->
<% @counties.each do |county| %>
<div class="row">
  <div class="span4 offset1"><%= county.name %></div>
  <div class="span4 offset1"><%= county.county_num %></div>
  <div class="span2"><%= link_to 'edit', '#' %></div>
</div>
<% end %>
<%= link_to "New county", new_county_path %>
<hr>

現在のコードは、以下のスクリーンショットを示しています。問題は、特定の章に関連付けられている郡だけでなく、すべての郡を反復処理していることです。インデックス ビューのスクリーンショット

:chapter_id表示ビューではなくインデックス ビューにいるため、フィールドに基づいて郡を反復させる章固有の変数をパーシャル内に追加するにはどうすればよいですか?

4

2 に答える 2

3
class ChaptersController < ApplicationController
  def index
    @chapters = Chapter.all
    # @counties = County.all(:joins => :chapter, :select => "counties.*, chapters.id")
  end
end

意見:

<% chapter.counties.each do |county| %>
于 2012-12-27T17:37:27.383 に答える
1

私はこのようなものがあなたのために働くと思います:

<%= @chapters.each do |chapter| %>

    <div class="row">
      <div class="span5 offset1"><h4><%= link_to chapter.name, edit_chapter_path(chapter.id) %></h4></div>
      <div class="span2"><h4><%= chapter.chapter_num %></h4></div>
    </div

    <% chapter.counties.each do |county| %>
        <div class="row">
          <div class="span4 offset1"><%= county.name %></div>
          <div class="span4 offset1"><%= county.county_num %></div>
          <div class="span2"><%= link_to 'edit', '#' %></div>
        </div>
    <% end %>
    <%= link_to "New county", new_chapter_county_path(chapter) %>
<% end %>

各章には多くの郡があるため、各章の郡を繰り返し処理する必要があることを理解することが重要であることに注意してくださいchapter.counties.each。これにより、その特定の章に属する郡のみが得られます。

また、新しい郡を作成するための別の link_to パスにも注意してください。郡が章の下にネストされるようにルートを設定している場合は、次のことができるはずです new_chapter_county_path(chapter)

于 2012-12-27T17:43:07.833 に答える