0

これは非常に初歩的なので、何が間違っているのかわかりません。私は @videos コレクション (@videos.count をデバッグすると 4 であることがわかります) を持っていますが、行<%= render @videos %>は 4 つのアイテムのうち 2 つしかレンダリングしていません。コントローラー メソッド (VideosController) は次のとおりです。

  def index
    @video = Video.new(athlete_id: current_user.id, sport_id: current_athlete_sport.id)
    @videos = current_user.videos_for_sport(current_athlete_sport).order("date DESC")
    debugger
    respond_with @videos
  end

<%= render @videos %>そして、前述の行がレンダリングしている _video パーシャル:

<%= form_for video do |f| %>
  <div class="row edit-video-container <%= video == @videos.pop ? 'last' : '' %>">
    <div class="span4">
      <div class="row">
        <div class="span4 video-thumbnail">
          <%= image_tag video.thumbnail_url || asset_path("video-encoding-placeholder.png"), {alt: "", title: "#{video.name || "My video" + video.id}"} %>
          <div class="video-ribbon">
            <ul>
              <li class="pull-left">
                <%= link_to "#video-player-modal", { data: { toggle: "modal", link: video.mp4_video_url, thumbnail: video.thumbnail_url }, role: "button", class: "video-player-link" } do %>
                  <i class="icon video-play"></i>
                  <p>Play</br>Video</p>
                <% end %>
              </li>
              <li class="pull-left">
                <%= link_to rotate_video_path(video, direction: "ccw"), :data => { :method => "put", :confirm => "Are you sure?", :type => 'json' } do %>
                  <i class="icon video-rotate-left"></i>
                  <p>Rotate</br>Left</p>
                <% end %>
              </li>
              <li class="pull-left">
                <%= link_to rotate_video_path(video, direction: "cw"), :data => { :method => "put", :confirm => "Are you sure?", :type => 'json' } do %>
                  <i class="icon video-rotate-right"></i>
                  <p>Rotate</br>Right</p>
                <% end %>
              </li>
              <li class="pull-left">
                <%= link_to video_path(video), :data => { :method => "delete", :confirm => "Are you sure?", :type => 'json' } do %>
                  <i class="icon video-delete"></i>
                  <p>Delete</br>Video</p>
                <% end %>
              </li>
            </ul>
          </div>
        </div>
      </div>
      <div class="row">
        <div class="span4">
          <%= f.check_box :featured, { checked: video.featured?, class: "autosave checkbox-right", data: { event: 'change' } } %>
          <%= label_tag "video-checkbox-featured-#{video.id}", "Use as featured video?", { class: "checkbox-right-label" } %>
        </div>
      </div>
    </div>
    <div class="span4">
      <div class="row">
        <div class="span4">
          <%= label :video, :name, "Video Name" %>
          <%= f.text_field :name, { class: "span4 autosave"} %>
        </div>
      </div>
      <div class="row">
        <div class="span4">
          <%= label :video, :video_type_id, "Video Type" %>
          <%= f.select:video_type_id, VideoType.all.collect { |vid| [vid.name, vid.id] }, { include_blank: "Choose One", selected: video.video_type_id }, { class: "chosen-select autosave", id: "", data: { event: 'change' } } %>
        </div>
      </div>
      <div class="row">
        <div class="span4">
          <%= label :video, :sport_id, "Video Sport" %>
          <%= f.select :sport_id, current_user.sports.collect { |sp| [sp.name, sp.id] }, { include_blank: "Choose one", selected: video.sport_id }, { class: "chosen-select autosave", id: "", data: { event: "change" } } %>
        </div>
      </div>
      <div class="row">
        <div class="span4">
          <%= label :video, :date, "Date Recorded" %>
          <%= f.text_field :date, {class: "autosave date datePicker span4", value: js_date(video.date) } %>
        </div>
      </div>
      <div class="row">
        <div class="span4">
          <%= label :video, :uniform_number, "Uniform Number" %>
          <%= f.text_field :uniform_number, { class: "autosave span4"} %>
        </div>
      </div>
    </div>
  </div>
<% end %>

繰り返しますが、コントローラーでデバッガーをスローするか、行の直前にページでデバッグをスローすると、<%= render @videos %>4 つのビデオが表示されますが、実際にレンダリングされるのは 2 つだけです。ここでちょっと大損!

4

1 に答える 1

0

問題はここにあります:

video == @videos.pop

ポップはあなたのコレクションからメンバーを取り出します。ループにブレーキをかけるため、ここでは使用しないでください。

この場合、コレクションの最初と最後のアイテムしか表示されないのではないでしょうか。

于 2013-09-09T19:01:40.810 に答える