Мне нужна небольшая помощь с некоторым массивом Ruby jujitsu.Извлечение определенных значений из массива Ruby и создание строки с разделителями-запятыми
Я следующий массив называется @tasks:
[#<PivotalTracker::Story:0x007f9d6b8 @id=314, @url="http://www.pivotaltracker.com/", @created_at=#<DateTime: 2012-06-18T20:23:42+00:00 ((2456097j,73422s,0n),+0s,2299161j)>, @accepted_at=nil, @project_id=357031, @name="Test ", @description="This is the description for \"Test\"", @story_type="feature", @estimate=-1, @current_state="unstarted", @requested_by="joe jones", @owned_by=nil, @labels=nil, @jira_id=nil, @jira_url=nil, @other_id=nil, @integration_id=nil, @deadline=nil, @attachments=[]>, #<PivotalTracker::Story:0x007f9d6b8 @id=315, @url="http://www.pivotaltracker.com/", @created_at=#<DateTime: 2012-06-18T20:25:20+00:00 ((2456097j,73520s,0n),+0s,2299161j)>, @accepted_at=nil, @project_id=357031, @name="Test 2", @description="This is the description for \"Test 2\"", @story_type="feature", @estimate=-1, @current_state="unstarted", @requested_by="joe jones", @owned_by=nil, @labels=nil, @jira_id=nil, @jira_url=nil, @other_id=nil, @integration_id=nil, @deadline=nil, @attachments=[]>, #<PivotalTracker::Story:0x007f9d6b8 @id=316, @url="http://www.pivotaltracker.com/story/", @created_at=#<DateTime: 2012-06-18T20:25:26+00:00 ((2456097j,73526s,0n),+0s,2299161j)>, @accepted_at=nil, @project_id=357031, @name="Test 3", @description="Description for Test 3 ", @story_type="feature", @estimate=-1, @current_state="unstarted", @requested_by="joe jones", @owned_by=nil, @labels=nil, @jira_id=nil, @jira_url=nil, @other_id=nil, @integration_id=nil, @deadline=nil, @attachments=[]>]
Моя конечная цель заключается в создании массива JavaScript, на мой взгляд .erb только с значениями ID в вышеуказанном массиве.
Я думал о попытке что-то вроде:
var myJSArray = [<%= @tasks.each { |t| print t.id.to_s+", " } %>];
Однако, что очевидно дописывает «» до конца строки, которая не является желательным (т.е. она возвращает «314, 315, 316, .»Кроме того, похоже, немного рубить и не правильный способ сделать это
Любые идеи о том, как сделать это правильно
Спасибо
UPDATE:.?! После того, как некоторые больше исследований на SO, мне кажется, я могу сделать это в два этапа:
@ids = @tasks.map { |t| t.id }
, а затем использовать его в представлении с:
var myJSArray = [<%= @ids.map(&:to_s).join(", ") %>];
Не уверен, что это идеальный или, если это может быть сделано за один шаг.
+1 для 'to_json' – robbrit
спасибо! первая вариация работала, когда я не включаю «j» - не уверен, почему это так? – tonic
второй вызвал проблемы. копаться в дальнейшем ... – tonic