0

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=[]>] 

私の最終的な目標は、上記の配列の ID 値だけを使用して、.erb ビューに JavaScript 配列を作成することです。

私は次のようなことをしようと考えていました:

var myJSArray = [<%= @tasks.each { |t| print t.id.to_s+", " } %>];

ただし、これは明らかに文字列の末尾に「,」を追加するため、望ましくありません (つまり、「314, 315, 316,」を返します)。これはちょっとしたハックのようにも見えますが、正しい方法ではありません。 .

これを適切に行う方法についてのアイデアはありますか?

ありがとうございました!

更新:SOについてさらに調査した後、これを2つのステップで実行できるようです:

@ids = @tasks.map { |t| t.id }

そして、それをビューで次のように使用します。

var myJSArray = [<%= @ids.map(&:to_s).join(", ") %>];

ただし、これが理想的かどうか、または単一のステップで実行できるかどうかはわかりません.

4

2 に答える 2

2
var myJSArray = [<%= j @tasks.map(&:id).join(',') %>];

または、次のようなものを好むかもしれません:

var myJSArray = <%= @tasks.map(&:id).to_json %>;
于 2012-06-25T16:08:18.080 に答える
1

使用Array#join

<%=print @task.map {|t| t.id.to_s}.join(', ') %>
于 2012-06-25T16:07:30.030 に答える