所以我有一个带有嵌套数据的表单,它正确地显示在表单中并正确保存。但是,我现在正在努力尝试显示这些数据而且我真的在争吵。
所以我有很多数据,但会关注两种特定类型的数据:
我有用户,用户可以创建项目。我正在与项目相关的两个数据字段是:
项目模型
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
项目视图以显示索引
<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变量,但我也没有任何运气。有人可以帮忙解释一下我会怎么做吗?
非常感谢!
更新 使用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_...
答案 0 :(得分:0)
project.budget.name #give name of budget
project.features do |feature|
feature.name # gives feature name
end
答案 1 :(得分:0)
当你说:
每个项目都有预算(在项目表中存储为budget_id,我想称之为预算名称)
这不是has_one
的工作方式,预计会在预算表上显示project_id
。
我认为你需要使用belongs_to
。
http://guides.rubyonrails.org/association_basics.html#the-has-one-association