我试图在调用.where查询后获取对象的属性。查询如下:
@matchers = TutoringSession.where(:begin_time_hour => 21).limit(5)
结果我得到了一系列辅导课程。但我希望能够只返回每个匹配辅导课程的特定属性。所以我在视图中有以下代码:
@matchers.each do |matcher|
matcher.begin_time_hour
end
不是列出匹配器的begin_time_hour属性,而是列出每个匹配器对象的所有属性。我试过这个块尝试“puts matchers.begin_time_hour”,并尝试使用partials来解决这个问题,但是我一直遇到问题。如果我问@matcher.class,它说,它是ActiveRecord :: Relation对象。我认为这将是一个TutoringSession对象。
以下是我的模型,如果有帮助的话。
require 'date'
class TutoringSession < ActiveRecord::Base
belongs_to :refugee
belongs_to :student
before_save :set_day_and_time_available, :set_time_available_hour_and_day
attr_accessor :begin_time, :book_level, :time_open
attr_accessible :time_open, :day_open, :tutoring_sessions_attributes, :page_begin, :begin_time
端
我的其他课程如下
require 'date'
require 'digest'
class Refugee < ActiveRecord::Base
has_many :tutoring_sessions
has_many :students, :through => :tutoring_sessions
accepts_nested_attributes_for :tutoring_sessions, :allow_destroy => true
attr_accessible :name, :email, :cell_number, :password, :password_confirmation, :day_open, :time_open, :tutoring_sessions_attributes
端
如果您需要更多信息,请与我们联系。谢谢您的帮助!
答案 0 :(得分:0)
看起来你没有向视图输出任何东西。致电
@matchers.each do |matcher|
matcher.begin_time_hour
end
你得到的结果是运行循环,这是关系,而不是数据。您正在访问begin_time_hour
,但您没有对此进行任何操作。你需要更像这样的东西来显示begin_time_hour
字段。
<% @matcher.each do |matcher| %>
<%= matcher.begin_time_hour %>
<% end %>
顺便说一下,@matchers
应该是一个ActiveRecord::Relation
对象,它是从where
和limit
子句生成的sql查询的表示。在关系上调用all
使其成为TutoringSession
个对象的数组
@matchers = TutoringSession.where(:begin_time_hour => 21).limit(5).all
调用each
隐式运行查询并迭代TutoringSession
个对象,因此您不必担心这一点。