隨筆-167  評論-65  文章-0  trackbacks-0
          ruby 1.8.7 + rails 2.1.0

          Rails 在 partial 中 傳遞 collection,默認的循環變量 是 partial的名字(約定)。或者你想改變變量名的話,可以使用 :as 參數聲明一個變量。。。不能用慣性思想 for ...........in........等

          例如:
          之前錯誤的寫法:
          partial : _feednews.html.erb
           <%= render :partial => 'shared/feednews_item',:collection => @feeds = feed_collection("hot").items %>

          partial : _feednews_item.html.erb
            <ul>
          <% for feed in @feeds.items %>
            <li  class="news"><a  href="<%= feed_link(feed.link) %>" target="_blank"><%=  feed_title(feed.title) %></a><br />
            <span class="grey small"><span> <%= feed_from(feed.title) %></span>&nbsp;&mdash;&nbsp;<span><%= feed.pubDate.to_date %></span></span></li>
          <% end %>
           </ul>

          上面第二個 partial 顯示的結果 for 循環 輸出 后的 加上 rails 約定的partial collection 循環輸出了。。結果重復。。做的過程中還遇到 partial collection empty 這個異常

          原因是 feed_collection("hot").items  返回的結果不是一個 collection..

          正確的寫法:
          partial : _feednews.html.erb
           <div><%= render :partial => 'shared/feednews_item',:collection => feed_collection("hot").items %></div>

          partial : _feednews_item.html.erb
          <ul>
            <% unless feednews_item.nil? %>
              <li  class="news"><a  href="<%= feed_link(feednews_item.link) %>" target="_blank"><%=  feed_title(feednews_item.title) %></a><br />
              <span class="grey small"><span> <%= feed_from(feednews_item.title) %></span>&nbsp;&mdash;&nbsp;<span><%= feednews_item.pubDate.to_date %></span></span></li>
            <% end %>
          </ul>

          從上面的prtial中可以看出 變量 是feednews_item 也就是partial的名字
           

          總結,一句話,如果 你在 partial 中 傳了 collection ,那么 就用 partial的名字 作變量輸出, 不需要 迭代, 如果 沒有 傳collection , 那么 就需要 迭代輸出!






          write by feng
          posted on 2009-08-17 18:21 fl1429 閱讀(1179) 評論(0)  編輯  收藏 所屬分類: Rails
          已訪問數:
          free counters
          主站蜘蛛池模板: 长垣县| 南宁市| 祁连县| 保康县| 太保市| 普兰县| 武陟县| 耿马| 荥阳市| 奎屯市| 长海县| 柳林县| 宜良县| 桐庐县| 朝阳区| 文昌市| 阿克苏市| 永川市| 康保县| 灵石县| 三明市| 奉贤区| 交口县| 象州县| 兴山县| 临漳县| 广平县| 秀山| 蓝田县| 上思县| 赤水市| 颍上县| 海淀区| 保康县| 日土县| 澳门| 琼海市| 黑龙江省| 塔城市| 泽州县| 靖安县|