0

私のアプリケーションには、@studentsのコレクションを「student」パーシャルに渡す「Students」パーシャルがあります。これらは最終的に私のインデックスページに学生の画像として表示されます。ユーザーが画像をクリックすると、生徒の写真とテキストが入ったボックスがポップアップ表示されます。これで、ユーザーが生徒を順番に切り替えることができる[前へ/次へ]ボタンができました。プラグインなしでサイクリングを実装しました...次/前のオブジェクトをロードするための単純なajax呼び出しだけです。私の問題は、私が最後の(または最初の)レコードにいるときを検出できないことです。おそらく最初と最後のオブジェクトにurlパラメータを設定する方法が必要です。したがって、次のようになります:www.mysite.com/students/15?last = true

私はこれを行うためのきれいな方法を見つけることができませんでした。これを正しい方法で考えているかどうかもわかりません。URLパラメータを添付する必要がありますか?または、モデルから属性を取得した後、オブジェクトを変更して属性を追加する必要がありますか?

ありがとうございました。

[編集]

これをもう少し明確にしたかっただけです。生徒のライトボックスをポップアップすると、2つのリンクがあります。のリンク(前のレコードへのリンク)とのレコードへのリンクです。前または次をクリックするたびに、jquery $ .loadメソッドを使用してajaxリクエストを作成し、必要なデータをライトボックスのdivにロードしています。

$('previous')。click($('mydiv')。load('前の学生のURL'););

最初のポップアップでDOMツリーを歩くと、「前/次の学生のURL」が表示されます。これらを保存して、再度参照できるようにします。

私の問題は、私がリストの最初の学生にいるのか、最後の学生にいるのかわからないことです。前へ/次へボタンを無効にできるように、これを知る必要があります。これは、rails/rubyまたはjavascriptのいずれかを介して実行できると思います。最初は、リンクまたは前/次の学生にurlパラメーターを追加することで(最初か最後かを示すために)、レールでこれを検出し、単純なif/elseを実行してリンクを無効にできると思いました。しかし、私はパーシャルを参照している方法でこれをやろうとして立ち往生しました。

4

2 に答える 2

1

最後のページが必要ですか、それとも@studentsの最後の学生が必要ですか?ページの一覧表示にはgemwill_paginateを使用し、次のページの更新には単純なJS「ajax」を使用します。このgemを使用して、ページごとのオブジェクトを1に設定できます。次に例を示します。

@students = Student.order(sort_column + " " + sort_direction).paginate(:per_page => 1, :page => params[:page])

「ajax」students/index.jsの例:

$('tbody').append('<%= j render(@students) %>');
<% if @students.next_page %>
  $('.pagination').replaceWith('<%= j will_paginate(@students) %>');
<% else %>
  $('.pagination').remove();
<% end %>

それをアクティブにするcoffescript:

if $('.pagination').length
        $(window).scroll ->
          url = $('.pagination .next_page').attr('href')
          if url && $(window).scrollTop() > $(document).height() - $(window).height() - 230
            $('.pagination').text("Načítavam...")
            $.getScript(url)
        $(window).scroll()

私は聖書からそれを学びます;-) RailsCasts-RyanBates

于 2012-06-05T06:56:43.743 に答える
1

えーと、私はインスピレーションを得るためにそれをやっています、多分あなたを助けるでしょう:ajaxローディングリスト、will_paginate、そして私が上で書いたコードを含むStudent/indexクラシックインデックスファイル。すべての学生にはリンク付きの画像があり、リンクには/ student / 4やremote:trueのようなhrefがあります。

学生ショーコントローラー

@student = Student.find(params[:id])

学生ショーjsファイルクラシックjsレンダリング「学生」

student _student.html.erbあなたのビューと2つのビューヘルパー:prev_help(params [:id])とnext_help(params [:id])

ヘルパー:

def prev_help(id)
    @student = Student.find(id - 1)
    link_to("Prev". @student )  if @student.nil?        
end

def next_help(id)
    @student = Student.find(id + 1)
    link_to("Prev". @student )  if @student.nil?        
end

今は時間がありませんが、このソリューションで問題が解決しない場合は、明日私に連絡してください。サンプルアプリを作成して、ソリューションをテストし、協力していきます。

于 2012-06-05T18:22:54.627 に答える