0

模範がいます。studentsControllerで、学生のコレクションを選択します。最初と最後のレコードにフラグを付けたい。

生徒のリストを次のように部分的に表示します: students/_studentで、ユーザーが各生徒をクリックすると、ポップアップが表示されます。

このフラグを使用して、この学生が最初か最後かを判断し、クエリ パラメータを URL に追加できるようにしたいと考えています。たとえば、最初の学生にカーソルを合わせると、URL は次のようになります: localhost:3000/student/1?location=first

部分的に表示する場合、コレクションは部分的に存在しないため、次のようなテストを行うことはできません。

何か案は?ありがとうございました。

[編集]。これはもともと @neils への返信でしたが、公開したいと思いました: 動作しますが、別の問題があります。私は「自動スクロール」機能を使用しているため、ユーザーがページを下にスクロールすると (一度に 3 つずつ) より多くの生徒がロードされ、「最初」と「最後」がそれぞれの最初と 3 番目の生徒に追加されます。コレクションの実際の最初と最後ではなく行。自動スクロールの方法: $.getScript を使用してindex.js.erbファイルを要求します。そのファイルは、students/_studentを次のようにレンダリングします: @students をレンダリングし、コンテナー div にアタッチします。そのテンプレート ( students/_student ) で URL をレンダリングするため、params は 1 回目または 3 回目ごとにレンダリングされます。

4

3 に答える 3

2

render @students必要に応じて通話を続行できます。student_counterこれを行うと、パーシャルで魔法のようにヘルパーが利用できることに注意してください。パーシャルで、ヘルパーまたはデコレーターを介してを比較student_counter@students.sizeて設定できますlink_to:location=>'first/last'

于 2012-09-05T03:50:22.203 に答える
1

Student.allコントローラーの @students ( 、 、何でも...) に学生のコレクションを既に割り当てていると仮定するとStudent.where(some_conditions)、次のことができます。

モデルに追加attr_accessor :flagします。Student

class Student < ActiveRecord::Base
  attr_accessor :flag
  #... rest of your code
end

これにより、 Student インスタンスに非 ActiveRecord 属性が作成されます。

コントローラーで次のようなことができるよりも:

@students[0].flag = 'first'
@students[-1].flag = 'last'

その情報をビューで使用します。それほどエレガントではありませんが、うまくいくはずです。

編集: より明確にするために、上記を少し詳しく説明しました。 EDIT2: 間違いを修正attr_accessorしました。正しい方法ではありませんattr_accessable...

于 2012-09-04T18:30:36.000 に答える
0

あなたの問題を正しく理解しているかどうかはわかりませんが、試してみます。

リストのインスタンス変数として使用していると仮定すると@students、学生のリストを次のようにパーシャルに渡すことができます。

<%= render 'students', :locals => {:students => @students} %>

内ではstudents/_students、リストをループして、次を使用してその位置を決定できますeach_with_index

<% students.each_with_index do |student, index| %>
于 2012-09-04T19:00:08.640 に答える