要素のハッシュがあり、それらのクラス名に基づいて結果をフィルタリングする必要があるとします。モデル名ごとのレコードの配列をフィルタリングする方法ruby on rails
レコードにPrivateSchoolの要素が含まれている場合、PrivateSchoolレコードをそれぞれの部分レコードに渡すことができます。
レコードに教師の要素が含まれている場合、教師の記録をその部分的な部分に渡すことができます。
だから、ここpartailsのコードは次のとおりです。私は<%= @results.inspect%>
を行う場合
<% if params[:tab] && params[:tab] == "featured" %>
<%= render partial: "featured", locals: {featured: @results} %>
<% elsif params[:tab] && params[:tab] == "schools" %>
<%= render partial: "schools", locals: {schools: @results} %>
<% elsif params[:tab] && params[:tab] == "playlists" %>
<%= render partial: "playlists", locals: {playlists: @results} %>
<% elsif params[:tab] && params[:tab] == "quizzes" %>
<%= render partial: "quizzes", locals: {quizzes: @results} %>
<% elsif params[:tab] && params[:tab] == "teachers" %>
<%= render partial: "teachers", locals: {teachers: @results} %>
<% end %>
それは以下の出力:
[#<LessonPlan id: 9, title: "advance java", description: "advance java",
notes: "advance java", subject_id: 2, teacher_id: 1, created_at: "2016-11-11
09:29:20", updated_at: "2016-11-11 09:29:20", is_private: true, is_publish:
false, user_id: 3, publish_date: nil, popularity_count: 0, is_special: false,
private_class_id: nil>, #<Quiz id: 1, title: "java history",
time_limit_in_minutes: 5, are_multiple_attempts_allowed: true, score_to_keep:
"highest", number_of_attempts_allowed: 4, student_see_quiz_score:
"after_each_attempt", show_one_question_at_a_time: true, is_private: false,
available_from_date_time: "2016-11-08 17:13:00", available_due_date_time:
"2016-11-10 17:18:00", instructions: "<p>java basics</p>", lesson_plan_id: 3,
user_id: 3, publish_date: "2016-11-09 12:14:04", created_at: "2016-11-09
12:14:04", updated_at: "2016-11-09 12:19:25", is_publish: true, subject_id: 3,
teacher_id: 1, popularity_count: 1, show_answers: "after_the_due_date">,
#<LessonPlan id: 4, title: "basics of java", description: "basics of java",
notes: "basics of java", subject_id: 2, teacher_id: 1, created_at: "2016-11-07
13:04:24", updated_at: "2016-11-10 10:40:54", is_private: false, is_publish:
false, user_id: 3, publish_date: "2016-11-09 08:08:41", popularity_count: 0,
is_special: false, private_class_id: nil>, #<Quiz id: 6, title: "java modern",
time_limit_in_minutes: 155, are_multiple_attempts_allowed: true,
score_to_keep: "latest", number_of_attempts_allowed: 9,
student_see_quiz_score: "after_last_attempt", show_one_question_at_a_time:
true, is_private: true, available_from_date_time: "2017-02-02 01:11:00",
available_due_date_time: "2017-02-27 01:11:00", instructions: "<p>java modern
java modern java modern java modern...", lesson_plan_id: 3, user_id: 3,
publish_date: "2016-12-22 20:37:35", created_at: "2016-12-22 20:37:35",
updated_at: "2017-02-09 20:11:38", is_publish: false, subject_id: 3,
teacher_id: 1, popularity_count: 0, show_answers: "after_the_due_date">,
#<Quiz id: 4, title: "Java quiz v1", time_limit_in_minutes: 180,
are_multiple_attempts_allowed: true, score_to_keep: "latest",
number_of_attempts_allowed: 6, student_see_quiz_score: "after_last_attempt",
show_one_question_at_a_time: false, is_private: false,
available_from_date_time: "2016-11-21 12:48:00", available_due_date_time:
"2016-11-23 12:48:00", instructions: "<p>Java quiz v1</p>\r\n<p
style=\"margin: 0px;\"><!--E...", lesson_plan_id: 8, user_id: 3, publish_date:
"2016-11-14 07:18:41", created_at: "2016-11-14 07:18:41", updated_at:
"2016-12-11 14:21:46", is_publish: false, subject_id: 3, teacher_id: 1,
popularity_count: 0, show_answers: "after_the_quiz">, #<Quiz id: 3, title:
"java basics", time_limit_in_minutes: 4, are_multiple_attempts_allowed: true,
score_to_keep: "highest", number_of_attempts_allowed: 10,
student_see_quiz_score: "after_last_attempt", show_one_question_at_a_time:
true, is_private: false, available_from_date_time: "2017-01-31 14:13:00",
available_due_date_time: "2017-02-17 14:13:00", instructions:
"<p>XXXXXXXXXXQQQQ</p>", lesson_plan_id: 8, user_id: 3, publish_date:
"2016-11-10 20:27:32", created_at: "2016-11-10 20:27:31", updated_at:
"2017-02-01 09:13:22", is_publish: false, subject_id: 3, teacher_id: 1,
popularity_count: 1, show_answers: "after_the_quiz">, #<PrivateSchool id: 18,
teacher_id: 39, user_id: 47, title: "Dr. Jasmine E McNair High School",
short_description: "Dr. Jasmine E McNair High School", price_type: "paid",
logo: "download.jpg", slug: "dr-jasmine-e-mcnair-high-school", created_at:
"2016-12-13 20:18:28", updated_at: "2016-12-13 20:18:28">]
私が本当に欲しいのはモデルクラス名ごとにこれらのレコードをフィルタリングすることであるので、Iレコードをフィルタリングし、それぞれの部分レコードにすべてのレコードを表示するのではなく、それぞれのレコードを部分レコードに送信できます。
現在のところ、1つの部分的なすべてのレコードが間違っているので、部分的にフィルタリングする必要があります。
したがって、 レコードがレッスンプランに属している場合、レッスンプランのすべてのレコードはレッスンプランの一部になります。
レコードが教師に属している場合、教師からのすべての記録は教師の一部になります。 など。
これは私の必要条件です。その後、
hash = @results.group_by(&:class)
:
<%= render partial: "lesson_plans", locals: {
lesson_plans: @results.select { |r| r.is_a?(LessonPlan) }
} %>
もちろん@LearningROR – devoh
はい、私と他の将来の読者に役立つように、このコードがどのように働いているのかを説明してください。 – LearningROR
@LearningRORもっと明瞭ですか? – devoh