Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RoR:为每个循环筛选用户选项_Ruby On Rails_Ruby_Foreach_Filter - Fatal编程技术网

Ruby on rails RoR:为每个循环筛选用户选项

Ruby on rails RoR:为每个循环筛选用户选项,ruby-on-rails,ruby,foreach,filter,Ruby On Rails,Ruby,Foreach,Filter,我正在尝试筛选视图中按学校用户id完成的选项。这项质询的内容如下: 因此,学生能够标记一项作业是否完成。但在视图中,它呈现了4个完整选项,因为4个school_用户与该作业相关。我正在尝试筛选,以便只有当前school_用户的完整选项可用 用户和学校用户有一对一的关系 在我看来(如果where语句删除后呈现4个完整选项,则此操作无效且不呈现任何内容) homeworks/show.html.erb <% @homework.homework_students.where(school_us

我正在尝试筛选视图中按学校用户id完成的选项。这项质询的内容如下:

因此,学生能够标记一项作业是否完成。但在视图中,它呈现了4个完整选项,因为4个school_用户与该作业相关。我正在尝试筛选,以便只有当前school_用户的完整选项可用

用户和学校用户有一对一的关系

在我看来(如果where语句删除后呈现4个完整选项,则此操作无效且不呈现任何内容)

homeworks/show.html.erb

<% @homework.homework_students.where(school_user_id: current_user.id).each do |homework_student| %> 
 <%= link_to "complete", complete_homework_path(:homework_id => @homework, :home_work_students_id => homework_student), method: :patch %> 
<% end %>
家庭作业_student.rb

has_many :homework_ratings, :class_name => 'HomeworkRating'
belongs_to :homework, :class_name => 'Homework', :foreign_key => :homework_id, dependent: :destroy
belongs_to :school_user, :class_name => 'SchoolUser', :foreign_key => :school_user_id
作业.rb

has_many :homework_students, :class_name => 'HomeworkStudent', dependent: :destroy 
belongs_to :school_user, :class_name => 'SchoolUser', :foreign_key => :school_user_id
如果我在其他地方过滤,我会这样做:

<% if homework.school_user.user_id == current_user.id %>
应该是

@homework.homework_students.joins(:school_user).where(school‌​_users: { user_id: current_user.id }).each

这个
,:class\u name=>'SchoolUser',:foreign\u key=>:school\u user\u id
是多余的,Rails可以为您解决这个问题。这同样适用于
:部分
外键
中的家庭作业
映射,以及其余映射中的
类名
。where(school\u user id:current\u user.id)
应该是
。where(school\u user:current\u user)
当前用户
的一个实例吗,我认为这是一个用户的例子。用户id也在学校用户模型中。我在上面试过了。同样的结果,不呈现任何内容。所有内容都经过school user,因此在该示例中有效。调试时,用调试输出替换
链接到
,例如
,然后发布您的输出。
irb(main):002:0> search = HomeworkStudent.find(142) 
HomeworkStudent Load (0.5ms) SELECT `homework_students`.* FROM `homework_students` WHERE `homework_students`.`id` = 142 LIMIT 1 
=> #<HomeworkStudent id: 142, school_user_id: 10001, homework_id: 78, completed_on: "2016-11-23 18:05:34", created_at: "2016-11-22 00:27:24", updated_at: "2016-11-23 18:05:34", completed: nil>
<% @homework.homework_students.joins(:school_user).where(school‌​_user: { user_id: current_user.id }).each do |homework_student| %>
Mysql2::Error: Unknown column 'school‌​_user.user_id' in 'where clause': SELECT `homework_students`.* FROM `homework_students` INNER JOIN `school_users` ON `school_users`.`id` = `homework_students`.`school_user_id` WHERE `homework_students`.`homework_id` = 78 AND `school‌​_user`.`user_id` = 1
@homework.homework_students.joins(:school_user).where(school‌​_users: { user_id: current_user.id }).each