从数据远程和html搞乱链接的Kaminari索引

时间:2013-01-06 23:22:35

标签: ruby-on-rails kaminari

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

一切都很好,直到我加入Kaminari分页。在整页视图中,没有#related div,因此分页不起作用。我将内脏分成了一个部分并添加了一个#related div并渲染了部分内容。从js我刚刚从JS渲染部分。这在整个页面视图中运行良好,但在显示页面中它将呈现部分,但链接不起作用,看起来它呈现整个显示页面。在另一个选项卡上关闭,然后返回到“进度”选项卡,加载部分和所有工作正常。只是在显示页面的初始加载时,我无法使页面链接起作用。

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

有什么想法吗?

编辑代码请求

控制器动作方法。此控制器中的索引方法还设置@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'))%>");

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

<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

1 个答案:

答案 0 :(得分:0)

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

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

虽然这解决了我的问题,但我仍然不明白为什么初始的html响应不响应相关div中的页面链接。我会把它作为别的东西来学习。在我弄清楚如何仅在显示页面的初始加载时起火时,我会把它放在coffescript中。