我现在有一个在页面上呈现对象的视图。对象是Integration
。在Integration
对象上,我有一个名为filters
的属性。 Filters
存储为数组。我需要做的就是在列表中列出它们下面的每个集成的过滤器。这是我的代码。
<% if @integrations.any? %>
<div class="configured-integrations">
<h3 class="heading-3">My Configured Integrations:</h3>
<ul class="integration-list integration-list--compact">
<%= render @integrations %>
</ul>
</div>
<% end %>
在屏幕截图中,您可以看到每个元素都是集成。我需要在标题下方列出每个集成的过滤器。
def index
# Get the list of the user's integrations grouped first by provider then
# from oldest to newest."
@integrations = current_account.integrations
.order(type: :asc, created_at: :asc)
end
我希望这很清楚。回顾一下:我需要在下面的每个集成中列出过滤器。我已经尝试了类似@integrations.first.filters
这样的内容,但是因为它是静态调用而无法工作。我需要像列表一样的东西。谢谢
答案 0 :(得分:0)
您需要迭代每次整合,然后<%= render integeration.filters %>
<% if @integrations.any? %>
<div class="configured-integrations">
<h3 class="heading-3">My Configured Integrations:</h3>
<ul class="integration-list integration-list--compact">
<% @integrations.each do |integration| %>
<li>
<%= integration %>
<ul class="">
<%= render integration.filters %>
</ul>
</li>
<% end %>
</ul>
</div>
<% end %>
您将不得不更新此代码以使部分工作,但我希望这可以解决这个问题。
您无法在此处使用快捷方式<%= render @integrations %>
,因为您需要@integrations
内的子组。所以你必须做很长的路要走。
答案 1 :(得分:0)
您可以添加另一个部分来渲染与您的集成关联的所有过滤器。
在视图中创建部分文件 _show_filters.html.erb
<% filters.each do |filter| %>
<li><%= filter %></li>
<% end %>
在迭代你的@integration对象时渲染这个部分。
<% if @integrations.any? %>
<div class="configured-integrations">
<h3 class="heading-3">My Configured Integrations:</h3>
<ul class="integration-list integration-list--compact">
<% @integrations.each do |integration| %>
<li>
<%= integration %>
<ul class="">
<%= render 'show_filters', filters: integration.filters %>
</ul>
</li>
<% end %>
</ul>
</div>
<% end %>