Ruby on rails Rails-如果填充了字段,如何渲染图像?

Ruby on rails Rails-如果填充了字段,如何渲染图像?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,在我的应用程序中,用户可以说他们已经完成了一项家庭作业 “completed_on”字段中填充了家庭作业的完成日期。如果未完成,则该字段为空 如果作业完成了,我想打勾,如果作业没有完成,我想打x “已完成”列位于名为“家庭作业学生”的表格中 class Homework < ActiveRecord::Base has_many :homework_students, :class_name => 'HomeworkStudent' class HomeworkStude

在我的应用程序中,用户可以说他们已经完成了一项家庭作业

“completed_on”字段中填充了家庭作业的完成日期。如果未完成,则该字段为空

如果作业完成了,我想打勾,如果作业没有完成,我想打x

“已完成”列位于名为“家庭作业学生”的表格中

class Homework < ActiveRecord::Base
    has_many :homework_students, :class_name => 'HomeworkStudent'


class HomeworkStudent < ActiveRecord::Base
    belongs_to :homework, :class_name => 'Homework'
视图:

看法


感谢您的指导

更新

这项工作:

def completed?
      homework_students.where("completed_on is not null").length == 0 
    end

<% @homeworks.each do |homework| %>
...
 <td height="1" class="text-center"><% if homework.completed? %>
  <%= image_tag "fi-check.svg", class: "homework_student_complete" %>
<% else %>
  <%= image_tag "fi-x.svg", class: "homework_student_complete" %>
<% end %></td>
...
<% end %>
def是否已完成?
学生家庭作业。其中(“已完成”不为空)。长度==0
结束
...
...

您的方法get\u completion没有返回任何内容。试试这个

@homework_student = homework_students.where("completed_on is not null")
return @homework_student

也许它有用。另外,请确保已完成的_on不为null,并能正常工作

您的方法get\u completion没有返回任何内容。试试这个

@homework_student = homework_students.where("completed_on is not null")
return @homework_student

也许它有用。另外,请确保已完成的_on不为null,并能正常工作

查询的结果可以是ActiveRecord::Relation或空数组,在这两种情况下,if语句的计算结果都为true。尝试将查询更改为:

def completion
      homework_students.where("completed_on is null").length == 0 
end 

查询的结果可以是ActiveRecord::Relation或空数组,在这两种情况下,if语句的计算结果都为true。尝试将查询更改为:

def completion
      homework_students.where("completed_on is null").length == 0 
end 

getCompletion
方法的返回类型是
ActiveRecord::Relation
。然后,通过将其放在一个条件中,您将询问此关系是否存在。即使关系包含空数据集(例如,
[]
),这也将始终是
真的
,因为空数组是真实的

您应该期望
getCompletion
返回
HomeworkStudent
记录的集合。如果你想在所有学生都完成作业的情况下显示一个勾号或“x”,那么你需要一个聚合方法来检查所有记录(如果有,或没有,等等)。尝试执行以下操作:

# app/models/homework.rb

def completed?
  homework_students.where("completed_on is null").none?
end


# in the view

<% if homework.completed? %>
  <%= image_tag "fi-check.svg", class: "homework_student_complete" %>
<% else %>
  <%= image_tag "fi-x.svg", class: "homework_student_complete" %>
<% end %>
#app/models/homography.rb
def完成了吗?
学生的家庭作业。在哪里(“已完成的”为空)。无?
结束
#在视图中

有关ActiveRecord::Relation方法的详细信息,请访问您的
getCompletion
方法的返回类型是
ActiveRecord::Relation
。然后,通过将其放在一个条件中,您将询问此关系是否存在。即使关系包含空数据集(例如,
[]
),这也将始终是
真的
,因为空数组是真实的

您应该期望
getCompletion
返回
HomeworkStudent
记录的集合。如果你想在所有学生都完成作业的情况下显示一个勾号或“x”,那么你需要一个聚合方法来检查所有记录(如果有,或没有,等等)。尝试执行以下操作:

# app/models/homework.rb

def completed?
  homework_students.where("completed_on is null").none?
end


# in the view

<% if homework.completed? %>
  <%= image_tag "fi-check.svg", class: "homework_student_complete" %>
<% else %>
  <%= image_tag "fi-x.svg", class: "homework_student_complete" %>
<% end %>
#app/models/homography.rb
def完成了吗?
学生的家庭作业。在哪里(“已完成的”为空)。无?
结束
#在视图中

有关ActiveRecord::Relationship方法的详细信息,请参见
image\u tag
部分,该部分仅在
if
条件评估为true时才应呈现。可能作为诊断放入
。只有当
if
条件评估为true时,才应呈现
图像标签
部分。在Ruby中,方法中的最后一条语句会自动返回。您基本上使用了@Co2的代码,并使其执行相同的操作,但使用了更详细的代码。即使你的想法是正确的,也没有理由将值存储在这样的实例方法中。对不起,伙计。好吧,上面的答案应该已经有点帮助了。。抱歉,没时间了。在Ruby中,方法中的最后一条语句会自动返回。您基本上使用了@Co2的代码,并使其执行相同的操作,但使用了更详细的代码。即使你的想法是正确的,也没有理由将值存储在这样的实例方法中。对不起,伙计。好吧,上面的答案应该已经有点帮助了。。没时间了,对不起。@Co2使用本提出的
none?
方法似乎更优雅;-)@使用Ben提出的
none?
方法似乎更优雅;-)
# app/models/homework.rb

def completed?
  homework_students.where("completed_on is null").none?
end


# in the view

<% if homework.completed? %>
  <%= image_tag "fi-check.svg", class: "homework_student_complete" %>
<% else %>
  <%= image_tag "fi-x.svg", class: "homework_student_complete" %>
<% end %>