我有两种模式:
class Team < ActiveRecord::Base
belongs_to :scoreboard
end
和
class Scoreboard < ActiveRecord::Base
has_many :teams
end
在记分板的显示页面上,我提供了以下内容:
<div class="all-teams">
<%= render @scoreboard.teams %>
</div>
链接到teams目录中的partial,它执行以下操作:
<%= div_for team, :class => "team-list" do %>
<div class= "boxin1"><%= team.name %></div>
<div class= "boxin2"><%= team.win %></div>
<div class= "boxin2"><%= team.loss %></div>
<div class= "boxin2"><%= team.tie %></div>
<span class= "boxin3 btn btn-primary"><%= link_to "Edit", edit_scoreboard_team_path(@scoreboard, team.id) %> </span>
<span class= "boxin3 btn btn-primary">Del</span>
<%end%>
在我提出问题之前,我还会显示相关操作的控制器数据:
记分牌控制器中的show动作:
def show
@scoreboard = Scoreboard.find_by(params[:id])
@team = @scoreboard.teams.build
end
重要提示 此记分板#show视图页面上已存在一个表单,该表单创建一个新的团队对象并在团队控制器中调用团队#new方法和团队#create方法。这就是记分板#show方法中有一个@team变量的原因。
团队控制器中的编辑操作
def edit
@scoreboard = Scoreboard.find(params[:scoreboard_id])
@team = @scoreboard.teams.find(params[:id])
end
现在这是我的问题。每次为每个团队生成一个div时,也会在该div旁边生成一个编辑按钮,该按钮将带您进入包含编辑该特定团队的表单的编辑视图。编辑链接中的 @scoreboard 会拉:scoreboard_id ,但似乎我们无法按顺序为每个团队提取:id 使编辑链接工作。每次,我们都会尝试访问记分板#show 的视图,我们收到以下错误:
没有路线匹配{:action =&gt;&#34;编辑&#34;,:controller =&gt;&#34;球队&#34;,:id =&gt; nil,:scoreboard_id =&gt; &#34; 7&#34;}缺少必需的密钥:[:id]
我们如何在div_for中为每个团队提取:id?
答案 0 :(得分:0)
您很有可能将新初始化的团队与其他记分板团队一起通过。在渲染团队之前尝试拒绝新记录:
<div class="all-teams">
<%= render @scoreboard.teams.reject(&:new_record?) %>
</div>