0

モデルから呼び出されることはありませんが、いくつかの異なるモデルからレンダリングされるモデル (ネストされた) のインデックス ビューがあります。1 つのビューで、JS または html のいずれかを使用してインデックスをレンダリングできます。JS では、ショー ビューの #related div とデータ リモート リンクにあります。別のオプションでは、同じコントローラー アクションを使用して、html のみをレンダリングします。

カミナリ ページングを追加するまでは問題ありませんでした。フル ページ ビューでは、#related div がなかったため、ページングが機能しませんでした。内臓をパーシャルに分割し、#related div を追加してパーシャルをレンダリングしました。js から、JS からパーシャルをレンダリングしました。それはフルページビューではうまくいきましたが、ショーページでは部分的にレンダリングされますが、リンクは機能しませんでした.ショーページ全体をレンダリングするように見えます. 別のタブをクリックしてから、進行状況タブに戻ると、部分が読み込まれ、すべて正常に動作します。ページ リンクを機能させることができないのは、ショー ページの最初の読み込み時だけです。

最初にページングを使用しない別のタブをロードして問題を解決できますが、これは、このページにアクセスするための主要な情報です。

何か案は?

コードの編集リクエスト

コントローラー アクション メソッド。このコントローラーの 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

ステージ ビューの progresss.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 のページ リンクに応答しない理由はまだわかりません。それは別の学習として残しておきます。ショーページの初期ロード時にのみ起動する方法を見つけたら、それを coffescript に入れます。

于 2013-01-07T11:17:02.543 に答える