我有一个模型(嵌套)的索引视图,它永远不会从模型中调用,而是从几个不同的模型中呈现。一个视图可以使用 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