我知道一个事实(通过控制台检查)输出应该是三首歌,但由于某种原因,我不断在第一首歌中添加第四首歌。这首歌在每个场合都是不同的,我很困惑为什么会发生这种情况。非常感谢任何帮助!
在我的控制器中
def edit
@songs = Song.all(order: 'title')
@song = Song.find(params[:id])
@setlist = Setlist.find(params[:id])
@allocations = @setlist.allocations
end
完整视图代码,请求:
首先是实际编辑页面的视图:
<h1>Edit a Setlist</h1>
<div class="row">
<div class="span8">
<%=form_for(@setlist) do|f|%>
<%=f.label :date, "Set a date" %>
<span><%=f.date_select :date%><span>
<%=f.label :morning, "Morning" %>
<%=f.radio_button :morning, true %>
<%=f.label :morning, "Evening" %>
<%=f.radio_button :morning, false %>
<h2>Library</h2>
<div>
<%= render 'library' %>
<%= render 'currentSet' %>
</div>
<%=f.submit "Save Setlist", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
当前设置部分(忽略库部分,因为它是一个没有添加任何内容的嵌套表单):
<div id="currentSet">
<h2>Current Setlist</h2>
<table class= "table table-striped table-bordered">
<thead>
<th>Title</th>
<th>Artist</th>
<th>Root Key</th>
<th>Remove</th>
</thead>
<tbody>
<% if(@allocations.empty?) %>
<tr><td>NO SONGS</td></tr>
<% else %>
<%= render @allocations %>
<%end%>
</tbody>
</table>
</div>
分配:
<tr>
<td><%= allocation.song.title %></td>
<td><%= allocation.song.artist %></td>
<td><%= allocation.song.key %></td>
<td><%= link_to "Remove Song", allocation, method: :delete %></td>
</tr>
我不确定这是否相关,但我还添加了实际渲染的html进行检查:
<tr>
<td>S</td>
<td>A</td>
<td>K</td>
<td><a href="/allocations/7" data-method="delete" rel="nofollow">Remove Song</a>...
</tr><tr>
<td>S</td>
<td>A</td>
<td>K</td>
<td><a href="/allocations" data-method="delete" rel="nofollow">Remove Song</a></td>
</tr>
我觉得很奇怪的是,最后一个条目与所有其他条目的不同之处在于url没有分配ID,即最后一个中的/ allocation / 9 /最后一个中的/ allocations。 / p>
答案 0 :(得分:3)
然后关闭这个:
def edit
@songs = Song.all(order: 'title')
@song = Song.find(params[:id])
@setlist = Setlist.find(params[:id])
@allocations = @setlist.allocations
end
在Song和Setlist查找器中使用相应的:id(即不是同一个)。