0

我有一个模型(嵌套)的索引视图,它永远不会从模型中调用,而是从几个不同的模型中呈现。一个视图可以使用 JS 或 html 呈现索引。对于 JS,它是在显示视图中的 #related div 和数据远程链接中。另一个选项使用相同的控制器操作来呈现它只有 html。

一切都很好,直到我添加了 Kaminari 分页。在完整页面视图中,没有#related div,因此分页不起作用。我将胆量分解成一个部分并添加了一个#related div 并渲染了部分。从 js 我只是从 JS 渲染了部分。这在完整页面视图中工作正常,但在显示页面中它会呈现部分,但链接不起作用,看起来它呈现整个显示页面。在另一个选项卡上点击然后返回到 Progressions 选项卡会加载部分内容,并且一切正常。只是在显示页面的初始加载时,我无法使页面链接正常工作。

我可以先加载另一个不使用分页的选项卡并解决我的问题,但这是您访问此页面的主要信息。

有任何想法吗?

编辑代码请求

控制器动作方法。这个控制器中的 index 方法也设置了@progressions

def progressions
  authorize! :read, Progression
  @stage = Stage.find(params[:id])
  @progressions = @stage.progressions_by_score.page(params[:page]).per(20)
  if params[:status] && !params[:status].blank? && @progressions
    @progressions =  @progressions.where(status: params[:status]).page(params[:page]).per(20)
  end
  respond_to do |format|
    format.js 
    format.html {render :template => "progressions/index"}
  end
end

阶段视图中的progressions.js.erb 文件

$("#related").html("<%= escape_javascript(render('progressions/index'))%>");

显示视图中的关系 div。这几乎是我的脚手架模板,我在其中显示或链接到相关信息。这<div id="related">是任何日期远程链接将加载数据的地方。在初始加载时,它会加载 _index 部分。

<div class="relations">
  <span class="navspan">
    <%= link_to 'Progressions: Status ->', progressions_stage_path(@stage), :'data-remote' => true, 
      :onclick => '$("#progression_status").val("")'  %> 
    <span class="huh">
      <%= hidden_field_tag :stage_id, params[:id]%>
      <%= select_tag :progression_status, options_for_select(Progression.statuses["all"], params[:status]), 
        :prompt => 'All', :class => 'f-left' %>
    </span>
    <%= link_to 'Assessors', assessors_stage_path(@stage), :'data-remote' => true %> 
    <%= link_to 'Events', events_stage_path(@stage), :'data-remote' => true %> 
    <%= link_to 'Select', select_stage_path(@stage) if can? :select_candidates, @stage %> 
    <%= link_to 'Ad Mgmt', edit_ad_stage_path(@stage) if can? :manage_ad, @stage %> 
  </span>
  <div class="f-clear"></div>
  <div id="related">
    <%= render "progressions/index"%>
  </div>
</div>

index.html.haml 文件

#related
  = render "progressions/index"

_index.html.haml 文件只是一个列出进程的索引表,但它确实包含:

= paginate @progressions,  :remote => true
4

1 回答 1

0

发布一些代码后不久,我回到记忆中并使用 javascript 加载相关的 div。我试图远离 javascript,但在这种情况下,我在添加:id => "status_id"到进度链接后将其添加到页面末尾:

<script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
    $("#status_link").trigger("click");
  })
</script>

虽然这解决了我的问题,但我仍然不明白为什么初始 html 响应不响应相关 div 中的页面链接。我会把它作为其他东西来学习。在弄清楚如何仅在显示页面的初始加载时触发后,我会将其放入咖啡脚本中。

于 2013-01-07T11:17:02.543 回答