我正在使用的嵌套属性中有几个模型。
我有“团队”(有很多比赛)和“比赛”(属于团队)。但我也希望比赛将“类别”引用为子对象(比赛只能有一个类别,一个类别可以有可能的比赛)。
逻辑的工作方式是首先创建一个团队,然后是比赛,然后我希望能够从类别列表中进行选择(部分)并建立关联(将比赛中的 category_id 设置为 id类别中的价值)。对我来说,在作为团队的子项创建新比赛时如何做到这一点很有意义,但是在创建第二个关系(现有比赛到现有父类别)时,我却碰壁了。
为我提供比赛显示视图的控制器是:
def show
@team = Team.find(params[:team_id])
@contest = Contest.find(params[:id])
@categories = Category.all
respond_to do |format|
format.html # show.html.erb
format.json { render json: [@contest] }
end
结尾
在显示视图中,我有以下代码:
<p><b>Name:</b><%= @contest.name %></p>
<%= link_to 'Edit', edit_team_contest_path(@team, @contest) %> |
<%= link_to 'Back', team_contests_path %>
<br />
<%= render 'categories/index'%>
我的部分 _index 类别包含以下代码:
<table>
<% @categories.each do |category| %>
<tr>
<td><%= category.level1 %></td>
<td><%= category.level2 %></td>
<td><%= category.level3 %></td>
<td><%= category.level4 %></td>
<td><%= link_to 'Show', category %></td>
<td><%= link_to 'Edit', edit_category_path(category) %></td>
<td><%= link_to 'Destroy', category, confirm: 'Are you sure?', method: :delete %></td>
<%end%>
</table>
我很困惑的地方是在哪里放置代码(在竞赛或类别控制器中?)以设置类别-竞赛父子关系,以及哪个视图(竞赛显示视图,或类别 _index 部分?)。我很确定我在这里不了解 Rails 的一些基本知识,所以如果有人能指出我可能会消除我的困惑的文档,我将非常感激。