Как мне перечислить связанные атрибуты в моем представлении Rails 3? - PullRequest
1 голос
/ 26 января 2011

У меня есть модель клиентов:

class Customer < ActiveRecord::Base
  has_many    :phone_numbers
end

и модель номера телефона

class PhoneNumber < ActiveRecord::Base
  belongs_to :customer
end

На мой взгляд, я делаю это:

<table id="customerSearch">
  <tr>
    <th>Last name</th>
    <th>First name</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>
<% @customers.each do |customer| %>
  <tr>
    <td><%= customer.last_name %></td>
    <td><%= customer.first_name %></td>
    <td><%= link_to 'Show', customer %></td>
    <td><%= link_to 'Edit', edit_customer_path(customer) %></td>
  </tr>
<% end %>
</table>

и вот мой контроллер для этого действия:

def index
  @customers = Customer.find(:all, :limit => 10, :order => 'last_name')
  flash.now[:notice] = 'Enter customer last or first name. Fields are case-sensitive.'
end

В таблице, на мой взгляд, я хочу показать первый номер телефона, найденный для каждого клиента, указанного в столбце номера телефона, например:

Last Name    first Name    Phone

Smith        John          3258889322
Jones        Davey         3412555232

Я придумал несколько решений этой проблемы, но ни одно из них не было очень изящным. Для этого должен существовать «Rails Way», который действительно притягателен, поскольку для разработчика веб-приложений это обычная ситуация.

1 Ответ

0 голосов
/ 26 января 2011

На ваш взгляд:

<table id="customerSearch">
  <tr>
    <th>Last name</th>
    <th>First name</th>
    <th>Phone</th>
    <th></th>
    <th></th>
  </tr>
<% @customers.each do |customer| %>
  <tr>
    <td><%= customer.last_name %></td>
    <td><%= customer.first_name %></td>
    <td><%= customer.phone_numbers.first.number if customer.phones.exists? %>
    <td><%= link_to 'Show', customer %></td>
    <td><%= link_to 'Edit', edit_customer_path(customer) %></td>
  </tr>
<% end %>
</table>

Ваша ассоциация позаботится о создании для вас тех атрибутов доступа, связанных с телефонными номерами. Вы можете увидеть все методы, созданные для вас с has_many ассоциацией здесь .

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