在 Rails 应用程序中单击更改 div 类

Ron*_*n M 3 javascript ruby-on-rails

我有一个 rails 应用程序,它按行显示步骤和子步骤。我希望创建一个操作,其中单击步骤行会将其类从“step_container”更改为“step_container active”,然后显示该步骤的相应子步骤行。我很难弄清楚如何使用 AJAX(或了解这是否是最好的工具)来完成此任务。

<% @steps.each do |step| %>
      <div class="step_container"> <!-- add 'active' if clicked-->
        <div class="medium-8 columns"><!-- add 'active_container' if clicked-->
          <div class="medium-5 columns step_info">
            <div class="step_number">
              <span><%= step.order %></span>
            </div>
            <div class="custom_step">
              <span class="step_title"><%= step.title %> (custom step)</span>
              <span class="step_desc"><%= step.description %></span>
            </div>
          </div>
        </div>

        <!-- Only show this div if top div is clicked -->
        <div class="medium-4 columns sub_steps_container">
          <% @substeps.where(step_id: step.id).each do |substep| %>
                  <div class="sub_steps">
                    <div class="step_number">
                      <span><%= substep.order %></span>
                    </div>
                    <div class="">
                      <span class="step_title"><%= substep.action %></span>
                      <span class="step_desc"><%= substep.description %></span>
                    </div>
                  </div>
          <% end %>
        </div>
      </div>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助。这花了我一天的大部分时间,但结果有限。

Bro*_*tse 5

这里不需要 AJAX,只需要一点点 javascript 和 css。

JavaScript:

$('.step_container').click(function() {
  $(this).addClass('active');
}
Run Code Online (Sandbox Code Playgroud)

CSS (sass):

.step_container {
  .sub_steps_container {
    display: none;
  }

  &.active {
    .sub_steps_container {
      display: block;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)