2011-02-07 3 views
2

내가 내 응용 프로그램에 대한 몇 가지 차트를 만들기 위해 노력하고있어 및 그래서 http://www.jqplot.com/index.php

그것은 입력에 배열 데이터를 사용을 사용하기 시작했습니다, 그래서 약간의 배열을 만들려고 해요 rails3 루비에서 내 데이터의, 그 다음 자바 스크립트에서 인쇄 할 수 있습니다.
즉, @array_example = [1,2,3,4,5]은 인쇄 할 때 작동하지 않지만 @array_example = "[1,2,3,4,5]"이 작동합니다. 내가 가지고있는 경우

어쨌든, 첫 번째 내 질문은 다음과 같습니다

<% @chart_posts = Post.where(:user_id => @profile.user.id) %> 

를 뭐죠 내가 배열의 각 게시물의 ID를 원하는 경우 (배열을 만들기 위해이 데이터를 사용하는 좋은 방법, 그리고 created_at 인 두 번째 배열)?

좀 더 명확히 말하면, 최종 어긋남은 인쇄 할 때 배열처럼 보일 필요가 있습니다.
즉, 주위에 [이 있어야하고 각 항목 사이에 ,이 있어야합니다.

+2

주 : 포스트 모델'belongs_to : user'와 사용자 모델'has_many : post '처럼 보입니다. 그 대신에 Post.where 절 대신에'@profile.user.posts'를 쓸 수 있습니다. – danneu

답변

3

최종 배열이 어떤 모양인지 분명하지 않지만, map은 필요한 것을 얻을 수 있다고 생각합니다.

ids = @chart_posts.map(&:id) 
# => [1,2,3,4] 

created_ats = @chart_posts.map(&:created_at) 
# => [timestamp,timestamp,timestamp,timestamp] 
당신은 또한뿐만 아니라지도 한 2 차원 배열로 그 결합 할 수

:

array = @chart_posts.map {|post| [post.id, post.created_at]} 
# => [[1, timestamp],[2,timestamp]] 
+0

'배열처럼 보이게'하려면 자바 스크립트에 직접 포함 시키려면'array.to_json'을 사용하여 모든 문자열을 이스케이프 처리해야합니다. – Chubas

+0

다른 방법으로,'array.inspect'를 사용할 수 있습니다 - 이것은 사람이 읽을 수있는 출력을 목표로하는 것 같습니다. –

1

가 그 로즈 PHP는 해커 같은데 ...

하지만 사람이 위에서 말한 가입

id_array_string = @chart_posts.map(&:id).inspect 
# => "[1,2,3,4]" 

timestamp_array_string = @chart_posts.map(&:created_at).inspect 

# => "[timestamp,timestamp,timestamp]"