Question

I'm trying to make a timeline for an the bugs and updates for an open source project. I'm new to ruby, but I'm getting some experience gradually.

I've created a table called historical_gems, with the following code in the model:

class HistoricalGem < ActiveRecord::Base
  attr_accessible :build_date, :version
  belongs_to :ruby_gem, :foreign_key => :gem_id
end

I'm using a JS Plugin (http://almende.github.com/chap-links-library/js/timeline/doc) that requires objects with two field names ('start' for the date and 'content' for the title) in the JSON Array to display the timeline using JS.

I believe I have to do something like this in the controller which defines my timeline method to render the 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

Then I probably would have to define a 'json_timelines' method inside my model, maybe something like:

def json_timelines(gems = [])
    dates = []
    gem_id.each { |p|
        gems << p
        dates << p.build_date(gems)
    end
   }
 end

I'm only starting out with RoR, and even after hours with guides and tutorials and debugging, I'm not able to put together this code. Can anyone help me out, please? I don't think I'm doing it right.

btw, don't be too harsh if I overlooked something obvious, I'm only 16 :)

Was it helpful?

Solution

The render :json => ... in your code should work fine (but with HistoricalGem instead of AbcTable) as long as json_timelines returns an object that's serializable as JSON (e.g., an Array or a Hash).

Try something like this for your method definition:

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

The above snippet assumes your "historical_gems" table has "title" and "build_date" columns; if not, adjust the code to reflect the fields you actually want represented in your JSON.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top