0

我是 Rails 的新手:我的侧边导航部分会执行每一步,并为其提供一个图标和一个链接。我希望当前活动步骤在顶部导航中具有与侧面导航相同的图标。但是,<%= icon[i] %> 将不起作用,因为 [i] 来自不同视图中的不同块。我将如何使活动链接顶部的导航具有与侧面导航相同的图标 [i] 而无法访问 i?见下文。

_side_navigation.html.erb

  <% icon= ["icon-link", "icon-bar-chart", "icon-edit", "icon-beaker","icon-link", "icon-bar-chart", "icon-edit", "icon-beaker"] %>


    <% @step_list.each_with_index do |step, i| %>

    <% case step.media_type %>
    <% when 'video' %>
            <li class="<%= nav_active step %>">
              <a href = "
                  <i class='icon-info-sign icon-2x'></i>
                  <span>Video</span>
                </a>
            </li>


    <% when 'excel' %>
            <li class="<%= nav_active step %>">
                  <i class="<%= icon[i] %> icon-2x"></i> **<<I need this [i] in the other partial so I know which element of the array is chosen**
                  <span>Step <%= i %> </span>
              </a>
            </li>

    <% else %>
            <li class="<%= nav_active step %>">
                  <i class="<%= icon[i] %> icon-2x"></i>
                  <span>Step <%= i %></span>
              </a>
            </li>

    <% end %>   
  <% end %>

_top_navigation.html.erb

<div class="area-top clearfix">
        <div class="pull-left header">


              <% case @step.media_type %>
              <% when 'video' %>
                <h3 class="title">
                  <i class="<%= icon[i] %>"></i></i> <<<here is the problem since, it does not have access to the current "i" from the other block
                  Video
                </h3>
                <h5>
                  A video for the course is here
                </h5>

              <% when 'excel' %>
               <h3 class="title">
                <i class="<%= icon[i] %>"></i></i>
              Excel
            </h3>
            <h5>
              Please use the excel sheet below to complete the challenge.
            </h5>

         <% else %>
           <h3 class="title">
            <i class="<%= icon[i] %>"></i></i>
              Multiple Choice                              
            </h3>
            <h5>
              Please choose from a selection below
            </h5>

         <% end %>

    </div>
4

2 回答 2

1

这些步骤没有自然顺序吗?当您包含部分(部分局部变量)时,您没有可以传入的“i”吗?

如果没有,听起来您需要一个更智能的“Step”对象,它知道它在工作流中的索引。

您还可以将图标列表放在帮助程序中,如下所示:

def icons
  ["icon-link", "icon-bar-chart", "icon-edit",
   "icon-beaker","icon-link", "icon-bar-chart",
   "icon-edit", "icon-beaker"]
end

让它脱离你的视野。

于 2013-08-15T20:27:54.693 回答
0

由于我是 Rails 的新手,我觉得这是一种 hack 方式,但仍然有效。我创建了下面的方法,它本质上是在步骤中,如果是活动步骤,则将当前索引保存到变量中。其中有一个方法,它返回变量而不需要任何输入(以便能够自由使用)

   def nav_active_icon(step, i)
    @x = i if params[:id].to_s == step.id.to_s
     def display
       return @x
     end
   end

在底部,它包含上述方法的步骤和索引

 <% @step_list.each_with_index do |step, i| %>

     <% case step.media_type %>
     <% when 'video' %>
           <li class="<%= nav_active step %>">
             <span class="glow"></span>
             <a href = "
             <%= course_level_step_path(@course.id, @level.id, step.id) %>" >
                <i class='icon-info-sign icon-2x'></i>
                <span>Video</span>
              </a>
          </li>

          <% nav_active_icon(step, i) %>

在这里它输出显示中活动步骤的当前索引(在与块不同的视图中)

  <% when 'excel' %>
           <h3 class="title">
            <i class="<%= icons[display] %>"></i></i>
              Excel
            </h3>
            <h5>
              Please use the excel sheet below to complete the challenge.
            </h5>
于 2013-08-15T22:45:26.943 回答