【问题标题】:Rails looping in PartialRails 部分循环
【发布时间】:2017-06-27 09:31:19
【问题描述】:

您好,我目前正在为我的集合模型运行一个部分循环,如下所示:

产品/show.html.erb

<div class="card card-block">
   <%= render partial: 'products/collects', locals: {product: @product} %>
</div>

部分 _collects.html.erb

<% current_user.collections.each do |collection| %>
    <div class="row">
      <div class="col-lg-6 d-flex justify-content-start">
        <h4><%= collection.name %></h4>
      </div>
      <div id="collection_<%= collection.id %>_<%= product.id %>_collects">
        <% if collection.collects?(product) %>
            <%= link_to product_collect_path(product.id, collection_id: collection.id), method: :delete, remote: true, id: 'remove-button' do %>
                <i class="fa fa-times" data-toggle='tooltip' data-placement='top' title='Remove this Product'></i>
            <% end %>
        <%- else -%>
            <%= link_to product_collect_path(product.id, collection_id: collection.id), method: :post, remote: true, id: 'collects-button' do %>
                <i class="fa fa-plus" data-toggle='tooltip' data-placement='top' title='Collect this Product'></i>
            <% end %>
        <% end %>
      </div>
    </div>
<% end %>
<br>
<div  class="row">
  <%= link_to 'Create new Collection', new_collection_path, class: 'btn btn-secondary btn-block' %>
</div>

这很好用,除非我想用 js 定位下面的 div:

<div id="collection_<%= collection.id %>_<%= product.id %>_collects">

有没有办法运行循环,并且只有在部分内部有以下内容

<div id="collection_<%= collection.id %>_<%= product.id %>_collects">
        <% if collection.collects?(product) %>
            <%= link_to product_collect_path(product.id, collection_id: collection.id), method: :delete, remote: true, id: 'remove-button' do %>
                <i class="fa fa-times" data-toggle='tooltip' data-placement='top' title='Remove this Product'></i>
            <% end %>
        <%- else -%>
            <%= link_to product_collect_path(product.id, collection_id: collection.id), method: :post, remote: true, id: 'collects-button' do %>
                <i class="fa fa-plus" data-toggle='tooltip' data-placement='top' title='Collect this Product'></i>
            <% end %>
        <% end %>
      </div>

还是更新下面的js并针对div而不是部分更好?

products/collects/create.js.erb

$('#collection_<%= @collection.id %>_<%= @product.id %>_collects').html("<%=j render partial: 'products/collects', locals: {product: @product} %>");

更新

我发现了一些其他问题,这些问题让我陷入了部分循环和渲染循环的疯狂问题。特别是thisthe docs

通过为这样的集合添加第二个本地对象和对象

<%= render partial: 'products/collects', locals: {product: @product, collection: collection}, object: collection %> 

我能够在没有方法错误的情况下显示该页面,但它显示 like so

我做错了什么?

【问题讨论】:

    标签: javascript jquery ruby-on-rails-5


    【解决方案1】:

    我发现通过像这样在集合循环内渲染部分

     <% @collections.each do |collection| %>
              <%= collection.name %><
    <%= render partial: 'products/collects', locals: {product: @product, collection: collection} %>    
        <% end %>
    

    并像这样设置我的部分:

    <div id="collection_<%= collection.id %>_<%= product.id %>_collects">
      <% if collection.collects?(product) %>
          <%= link_to product_collect_path(product.id, collection_id: collection.id), method: :delete, remote: true, id: 'remove-button' do %>
              <i class="material-icons">subtract</i></i>
          <% end %>
      <%- else -%>
          <%= link_to product_collect_path(product.id, collection_id: collection.id), method: :post, remote: true, id: 'collects-button' do %>
              <i class="material-icons">add</i>
          <% end %>
      <% end %>
    </div> 
    

    我能够运行我的循环并渲染部分。在我最初的当地人电话中,我错过了收藏:收藏。如我的更新中所述,我建议深入部分循环和渲染循环的兔子洞。

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 1970-01-01
      • 2015-02-19
      • 2015-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2012-11-01
      相关资源
      最近更新 更多