Итак, у меня есть форма с вложенными данными, которые правильно отображаются в форме и правильно сохраняются. Тем не менее, я сейчас работаю над попыткой отобразить эти данные, и я действительно сражаюсь.Борьба за отображение вложенных данных в Rails
Так что у меня много данных, но основное внимание будет уделено двум конкретным типам данных:
У меня есть пользователи, и пользователи могут создавать проекты. Два поля данных я сражающиеся с связанные с проектами являются:
- Каждый проект имеет бюджет (хранится как budget_id на столе проекта, и для которого я хочу назвать имя бюджета)
- Каждый проект кучу функций через features_projects присоединиться к таблице
Модель проекта
class Project < ApplicationRecord
belongs_to :user
has_one :budget
has_and_belongs_to_many :features
end
Бюджет Модель
class Budget < ApplicationRecord
belongs_to :project
end
Особенности модели
class Feature < ApplicationRecord
has_and_belongs_to_many :projects
end
Экстракт индексного метода с Проекты контроллера
def index
@projects = Project.all
end
Project View, чтобы показать индекс
<div class="container dashboard">
<div class="center">
<h1> Your Projects</h1>
</div>
<table class="table table-striped">
<thead>
<tr>
<th>Description</th>
<th>Budget</th>
<th>User_id</th>
<th colspan="3"></th>
</tr>
</thead>
<tbody>
<% @projects.each do |project| %>
<tr>
<% if project.user == current_user %>
<td><%= project.description %></td>
<td><%= project.budget_id %></td>
<td><%= project.user.email if project.user %></td>
<td><%= link_to 'Show', project, class: "btn btn-info btn-sm" %></td>
<td><%= link_to 'Edit', edit_project_path(project), class: "btn btn-warning btn-sm" %></td>
<td><%= link_to 'Destroy', project, class: "btn btn-danger btn-sm", method: :delete, data: { confirm: 'Are you sure?' } %></td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
<br>
<div class="center">
<%= link_to 'New Project', new_project_path, class:"btn btn-lg btn-success" %>
</div>
</div>
В основном я хочу иметь возможность отображать бюджет, сохраненный для каждого проекта, а также список функций, которые они выбрали. Я пробовал несколько разных решений из онлайн-решений, но мне не повезло :(Я думаю, возможно, мне нужно создать переменную @budget, возможно, под индексом, но мне тоже не повезло. Может кто-нибудь любезно помочь объяснить, как я хотел бы сделать это
спасибо
UPDATE Использование project.budget.name показывает следующее сообщение об ошибке:?!
ActiveRecord::StatementInvalid in Projects#index
PG::UndefinedColumn: ERROR: column budgets.project_id does not exist
LINE 1: SELECT "budgets".* FROM "budgets" WHERE "budgets"."project_...
Потрясающие спасибо! Вот так! – Stephen