Ruby on Rails中连接表的正确关联是什么?

时间:2017-10-20 15:54:38

标签: ruby-on-rails

所以我有一个我正在研究的食谱应用程序,我无法理解为什么我没有得到展示的东西。我使用Recipe作为连接表,为简单起见,我只将它与其他三个表一起使用。对于应用程序而言,我唯一想要显示的是每个模型上关联的名称。

我有以下型号: 蔬菜 蛋白 淀粉 配方

Recipe充当连接表并具有:

belongs_to :vegetable
belongs_to :protein
belongs_to :starch
accepts_nested_attributes_for :vegetable, :protein, :starch

其他每个模型都有:

has_one :recipe

所以我对视图的想法是一个简单的迭代

<table>
<thead>
<tr>
<th> Vegetable Name </th>
<th> Protein Name </th>
</tr>
</thead>
<% @recipes.each do |recipes| %>
<tr>
<td> <%= recipe.vegetable.name %> <td>
<td> <%= recipe.protein.name %> <td>
</tr>

然而,标题之外什么也没有出现。我已经通过迭代完成了各种各样的事情,比如将配方更改为配方,在每列的末尾将配方作为参数传递。我确保我的配方控制器具有以下功能:

def recipe_params
params.require(:recipe).permit(:vegetable_id, :protein_id, :starch_id)
end

我的协会错了,这就是为什么它没有提出任何内容?

1 个答案:

答案 0 :(得分:2)

我认为这是一个错字。使用此:

<% @recipes.each do |**recipe**| %>
  <tr>
    <td><%= recipe.vegetable.name %><td>
    <td><%= recipe.protein.name %><td>
  </tr>
<%end%>