Попытка отобразить записи из связанных моделей на Rails 5.2 - PullRequest
0 голосов
/ 27 декабря 2018

Исходя из этого вопроса

class CoffeeRoast < ApplicationRecord
    has_many :coffee_blends
    has_many :coffee_beans, through: :coffee_blends
    has_one :country, through: :coffee_beans
end

class CoffeeBean < ApplicationRecord
    has_many :coffee_blends
    has_many :coffee_roasts, through: :coffee_blends
    belongs_to :country
end

class Country < ApplicationRecord
  has_many :coffee_beans
end

class CoffeeBlend < ApplicationRecord
    belongs_to :coffee_bean
    belongs_to :coffee_roast
end

Я могу показать связанные coffee_beans на странице показа coffee_roasts, а также country, однако,Я не могу понять, как правильно их отображать.

Мой текущий код пытается показать бин и связанную с ним страну в одной строке таблицы, однако верхняя часть пуста, и обе страны находятся ввторой ряд.

coffee_roasts / show.html.erb

<h1 class="display-3"><%= @coffee_roast.name %></h1>
      <p>
        by <h2 class="display-6"><%= @coffee_roast.roaster.roaster_name %></h2>
      </p>

<div class="table-responsive">
 <table class="table">
 <thead>     
    <tr>
      <th>Bean</th>
      <th>Country</th>
    </tr>
    </thead>
    <tbody>
 <% @coffee_roast.coffee_blends.each do |blend| %>
    <tr>
  <th><%= blend.coffee_bean.name %>

    <% end %></th>
  <th><%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name }.join(', ') %></th>
</tr>   
</tbody>
</table>

Bean |Страна

El Martillo |

Финка Ла Кумбре |Сальвадор, Гватемала

El Salvador показывают, что они соответствуют бобу El Martillo.

Мой подход здесь совершенно неправильный, но я довольно плохо знаком с работой с несколькими уровнямимодели так еще учатся.

Как я могу заставить ассоциированную страну бобов отображаться рядом с бобом?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Это было намного проще, чем я думал.Я нашел ниже работает отлично.Нет необходимости отображать массив.

<tbody>
  <% @coffee_roast.coffee_blends.each do |blend| %>
  <tr>
    <td><%= blend.coffee_bean.name %></td>
    <td><%= blend.coffee_bean.country.country_name %></td> #this bit was the original concern.
    <td><%= blend.coffee_bean.variety %></td>
    <td><%= blend.coffee_bean.process %></td>
  <% end %>
  </tr>   
</tbody>
0 голосов
/ 28 декабря 2018
<tbody>
  <% @coffee_roast.coffee_blends.each do |blend| %>
    <tr>
      <td><%= blend.coffee_bean.name %></td>
      <td><%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name }.join(', ') %></td>
    </tr>
  <% end %>  
</tbody>

попробуйте и посмотрите, работает ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...