0

我正在尝试为开源项目的错误和更新制定时间表。我是红宝石的新手,但我逐渐获得了一些经验。

我创建了一个名为history_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),它需要具有两个字段名称的对象(“开始”用于日期,“内容”用于title) 在 JSON Array 中使用 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 岁:)

4

1 回答 1

2

只要返回可序列化为 JSON 的对象(例如ArrayHash render :json => ...,您的代码中的 就应该可以正常工作(但使用HistoricalGem而不是)。AbcTablejson_timelines

为您的方法定义尝试这样的事情:

def json_timelines(gems = [])
  gems.map do |g|
    {
      :content => g.title,
      :date    => g.build_date
    }
  end
end

上面的代码片段假设您的“historical_gems”表有“title”和“build_date”列;如果没有,请调整代码以反映您实际希望在 JSON 中表示的字段。

于 2012-12-12T19:40:58.207 回答