我有三个型号PriceGroup,PriceGroupLine和Item。 PriceGroup有字段 - :id和:name 项目包含字段 - :id和:name PriceGroupLine有字段 - :id,:price_group_id,:item_id,:price
社团:
PriceGroup has_many PriceGroupLines
PriceGroupLine has_many Items
PriceGroupLine belongs_to PriceGroup
我需要在PriceGroup模型的show.html.erb上显示PriceGroupLine模型的字符串。它看起来像桌子(我无法发布图片 - 低信誉(((),ITEM - 当前价格组的价格。在PriceGroup中可以有很多PriceGroupLines。它们都必须显示当前价格组。
我是Rails的新手。你能告诉我解决问题的方法
更新
我还需要从PriceGroup显示视图中插入PriceGroupLine模型行。如果我需要插入,我应该如何组织form_for helper:
以下是我的PriceGroup的show.html.erb代码。在价格组中添加新项目(通过价格组行)无效。 PriceGroup的未定义方法'价格':0x007f7201dc0aa8错误
<div class="container col-md-5">
<h4>PriceGroup Info</h4>
<%= link_to "Add new price group", new_price_group_path, class: "btn btn-primary btn-xs", role: "button" %>
<%= link_to "Back", price_groups_path, class: "btn btn-primary btn-xs", role: "button" %>
<table class="table table-hover table-condensed table-bordered">
<tr>
<td><strong>Price Group name</strong></td>
<td><%= @price_group.name %></td>
</tr>
</table>
<h4>Price Group Content</h4>
<table class="table table-hover table-condensed table-bordered">
<tr>
<td><strong>Price Group Name</strong></td>
<td><strong>Price</strong></td>
<td><strong>Operations</strong></td>
</tr>
<% @price_group.price_group_lines.each do |price_group_line| %>
<tr>
<td><%= price_group_line.item.try(:name) %></td>
<td><%= price_group_line.price %></td>
<td><%= link_to "Edit", edit_price_group_line_path(price_group_line), class: "btn btn-primary btn-xs", role: "button" %> | <%= link_to "Delete", price_group_line_path(price_group_line), method: :delete, data: { confirm: "Sure?" }, class: "btn btn-primary btn-xs", role: "button" %></td>
</tr>
<% end %>
</table>
</div>
<div class="container col-md-10">
<h4>Add new item to PeiceGroup</h4>
<%= form_for @price_group, html: {class: "form-inline"} do |f| %>
<div class="form-group">
<label>Item</label>
<%= f.collection_select(:id, Item.all, :id, :name, {}, {class: "form-control"}) %>
</div>
<div class="form-group">
<label>Price</label>
<%= f.text_field :price, class: "form-control" %>
</div>
<%= f.submit "Add item", class: "btn btn-default" %>
<% end %>
</div>
答案 0 :(得分:0)
假设您有一个变量,其pricegroup对象名为@price_group
。所以在视图中你可以做的是:
<% @price_group.price_group_lines.each do |price_group_line| %>
<%= price_group_line.name %> #or anything you want to do
<%= price_group_line.item.name %> #for the item name
<% end %>
假设您需要来自price_group_line
的单个属性的逗号分隔值,那么您也可以这样做:
<%= @price_group.price_group_lines.map(&:name).join(', ') %>
这将为您提供逗号分隔的所有名称。
正如Glupo建议您可以像这样急切加载以避免视图上的数据库请求。所以在你的控制器动作中:
@price_group = PriceGroup.find(params[:id]).include(:price_group_lines)
希望这有帮助。