0

我知道一个事实(通过控制台检查)输出应该是三首歌曲,但由于某种原因,我不断在每一页中添加第四首歌曲。这首歌在每个场合都是不同的,我很困惑为什么会这样。任何帮助深表感谢!

在我的控制器中

  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,即倒数第二个中的 /allocations/9 与最后一个中的 /allocations。

4

1 回答 1

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(即不是同一个)。

于 2012-07-11T19:57:25.203 回答