0

このコード ビューは非常に読みにくく、リファクタリングが必要です。

  <div class="tab-content">
    <% @posts.each_with_index do |post,pi| %>
      <div class="tab-pane fade <%= 'active in' if pi == 0 %>" id="<%= "post_"+ pi.to_s %>">
        <h2><%= post.title %></h2>
        <ul class="thumbnails">
          <% post.assets.each_with_index do |asset, i| %>
            <%= link_to (image_tag (asset.photo.url(:thumb))), "#p"+pi.to_s+"a"+i.to_s, :"data-toggle" => "modal", :class => "thumbnail span2" %>
            <div class="modal hide fade" id="<%= "p"+pi.to_s+"a"+i.to_s %>" >
              <div class="modal-body">
                <div class="carousel slide" id="<%= "carousel_"+"p"+pi.to_s+"a"+i.to_s %>" >
                  <div class="carousel-inner" >
                    <% post.assets.each_with_index do |photo, ai| %>
                      <div class="<%= 'active ' if ai == i %>item">
                        <%= image_tag photo.photo.url(:normal) %>
                        <div class="carousel-caption">
                          <h4><%= post.title %></h4>
                        </div>
                      </div>
                    <% end %>
                  </div>
                  <a class="carousel-control left" href="<%= "#carousel_"+"p"+pi.to_s+"a"+i.to_s %>" data-slide="prev">&lsaquo;</a>
                  <a class="carousel-control right" href="<%= "#carousel_"+"p"+pi.to_s+"a"+i.to_s %>" data-slide="next">&rsaquo;</a>
                </div>
              </div>
            </div>
          <% end %>
        </ul>
        <div><%= mdown(post.content) %></div>
        <p><%= raw post.tags.map(&:name).map { |t| link_to t, tag_path(t) }.join(', ') %></p>
        <p>
          <%= link_to 'Show', post %>
          <%= link_to 'Edit', edit_post_path(post) %>
          <%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %>
        </p>
      </div>
    <% end %>

    <br />

    <%= link_to 'New Post', new_post_path %>
  </div>

基本的に、各投稿を一覧表示し、投稿の各画像をレンダリングします。各画像はクリック可能なサムネイルで、カルーセルを含むモーダルがポップアップ表示されます。各カルーセルには、特定の投稿の各写真が含まれています。

私のアイデアは、コードを 8 行目から 24 行目に移動し、それをパーシャルに移動することでした。問題は、次のエラーが発生することです。

undefined local variable or method `pi' for #<#<Class:0x000000023b18f0>:0x007f91ec67c458>

部分的に親から変数を継承させる方法はありますか?

4

2 に答える 2

3

部分ビューにローカル変数を渡すことができます: RubyOnRails のガイドのセクション 3.4.4「ローカル変数の受け渡し」

彼らの例:

<%= render :partial => "form", :locals => { :zone => @zone } %>

あなたの場合:

<%= render :partial => "modal_box", :locals => { :pi => pi } %>

お役に立てれば!

于 2012-09-28T16:37:47.723 に答える
1

部分的にローカルを渡す...

<%= render :partial => 'blah' , :locals => { :var => value} %>

また

<%= render 'blah' , :var => value %>
于 2012-09-28T16:58:23.013 に答える