【问题标题】:Show/hide model contents in the context of other models在其他模型的上下文中显示/隐藏模型内容
【发布时间】:2016-11-04 04:36:41
【问题描述】:

所以我有一个 Category 模型,它与我的 Soup 模型有“很多”关系。

目前,我的页面呈现了一个类别列表,其中包含以下每个类别中的汤。页面输出如下所示:

拉面 *汤 1 *汤2 其他汤 *汤3 *汤4

我添加了单击类别名称以显示/隐藏汤的功能。但我想将此功能的范围限制在每​​个类别。换句话说,我只想点击“拉面”显示/隐藏汤 1 和汤 2。现在,单击任何类别会显示/隐藏所有 4 种汤。

views> 类别> index.html.erb

<ul id="folderList">
  <% @categories.each do |category| %>

  <li>
  <img src="https://cdn4.iconfinder.com/data/icons/small-n-flat/24/folder-blue-128.png" alt="folder" width="10%">

  <%= link_to category.name, '#', id: 'show_catcontents' %> (<%= category.soups.count%>)

  <div id="catcontents">
    <ul>
    <%- category.soups.each do |soup| %>
      <li><%= soup.name %></li>
    <%- end %>
    </ul>
  </div>

  </li>
  <% end %>
</ul>

<script>    
  $(function() {
  $('a#show_catcontents').click(function(event){
    event.preventDefault();
    $('div#catcontents').toggle();
  });
});
</script>

感谢您的任何帮助

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    在不改变太多的情况下做到这一点的一种简单方法是为每个元素添加一个 id 以在嵌入的 ruby​​ 中进一步指定它们,然后在 Javascript 中隐藏该特定元素而不是整个 catcontents &lt;div&gt;隐藏功能。

    例如:

    <div id="catcontents">
      <ul>
        <%- category.soups.each do |soup| %>
          <li id= <%= soup.name %> ><%= soup.name %></li>
        <%- end %>
      </ul>
    </div>
    

    当然,只需将您的 Javascript 隐藏函数更改为使用 &lt;li&gt; id 而不是 catcontents &lt;div&gt; 隐藏。

    【讨论】:

    • 感谢您的帮助。你能告诉我你如何在JS函数中引用li的ID吗?我尝试查看此页面以获得答案,但我对如何在我的中处理它感到困惑,因为 ID 是一个变量 stackoverflow.com/questions/18162197/…
    • 当然!当您使用 jquery 时,您可以利用 jquery 选择器。要按 id 选择元素,请使用 $("#id")。有关 jquery 选择器的进一步阅读,您可以查看来自 w3schools 的文章 here
    • 所以我知道如何将 jquery 选择器用于固定 ID,但在这种情况下,我无法弄清楚如何在我的选择器中引用 变量.我该怎么做?对不起,菜鸟!
    • 啊,别担心;必须从某个地方开始。我在想你可以将汤名称作为参数传递给一个通用的 hide-by-id 函数,该函数接受你给它的 id 参数并隐藏该元素。然后,您可以在控制流中的任何位置调用给定汤名称的函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    相关资源
    最近更新 更多