Rails在视图中返回奇怪的无效信息但不是控制台

时间:2012-07-11 19:16:11

标签: ruby-on-rails ruby activerecord

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

在我的控制器中

  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>

1 个答案:

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