我正在尝试为开源项目制作错误和更新的时间表。我是红宝石的新手,但我逐渐获得了一些经验。
我创建了一个名为historical_gems的表,模型中包含以下代码:
class HistoricalGem < ActiveRecord::Base
attr_accessible :build_date, :version
belongs_to :ruby_gem, :foreign_key => :gem_id
end
我正在使用一个JS插件(http://almende.github.com/chap-links-library/js/timeline/doc),它需要具有两个字段名称的对象(日期和'内容的'开头' JSON数组中的'标题',用JS显示时间轴。
我相信我必须在控制器中做这样的事情,它定义了我的时间轴方法来渲染JSON:
def timelinem
@name = params[:id]
@rpm = AbcTable.find_by_name(@name)
respond_to do |format|
format.json { render :json => @rpm.json_timelines }
end
end
然后我可能不得不在我的模型中定义一个'json_timelines'方法,可能是这样的:
def json_timelines(gems = [])
dates = []
gem_id.each { |p|
gems << p
dates << p.build_date(gems)
end
}
end
我刚刚开始使用RoR,即使经过数小时的指南,教程和调试,我也无法将这些代码放在一起。有人可以帮帮我吗?我认为我做得不对。
顺便说一句,如果我忽视了一些明显的东西,请不要太苛刻,我只有16岁:)答案 0 :(得分:2)
只要render :json => ...
返回一个可序列化为JSON的对象,代码中的HistoricalGem
就可以正常工作(但AbcTable
而不是json_timelines
)(例如, Array或Hash)。
尝试类似这样的方法定义:
def json_timelines(gems = [])
gems.map do |g|
{
:content => g.title,
:date => g.build_date
}
end
end
上面的代码段假设您的“historical_gems”表中包含“title”和“build_date”列;如果没有,请调整代码以反映您实际想要在JSON中表示的字段。