2011-09-29 3 views
0

내 Rails 앱에서 tags 용 jQuery Tokeninput을 사용하고 있습니다. JSON을 다루지는 않았지만 (프로그래밍을 처음 사용하는 경우), 문자열 값이 Profile.all 인 json 파일을 생성하는 방법이 있는지 궁금합니다. 여기JSON 파일에 Profile.all의 Rails 필드 채우기

가있는 indexTagsController : 가능한 경우

class TagsController < ApplicationController 
    def index 
    @tags = Tag.where("name like ?", "%#{params[:q]}%") 
    respond_to do |format| 
     format.html 
     format.json { render :json => @tags.map(&:attributes) } 
    end 
    end 
end 

가, 누군가가 나에게 그것을 할 수있는 방법에 대한 아이디어를 제공 할 수 있습니까? 더 많은 코드가 필요하면 알려주십시오!

설명 : 이유는 이미 존재하는 태그로 @tags을 제한하는 것입니다.

답변

0

올바르게 이해하면 게시 한 코드가 올바르게 작동합니까? 하지만 JSON 출력을 브라우저로 스트리밍하지 않고 파일에 씁니다.

Rails가 the source에 JSON을 렌더링하는 방법을 살펴보십시오. 꽤 간단합니다. 렌더링되는 모든 객체에 대해 to_json 함수를 호출하기 만하면됩니다.

예 후다 카츠 (Yehuda Katz)의 this excellent post을 살펴보십시오. 에 대한 섹션을 찾으십시오..

File.open("all_profiles.json", "w") { |f| f.write(Profile.all.to_json) } 

편집 :

지금,이 같은 것을 할 수있는 파일로 JSON 모든 프로필 모델을 저장하기 위해 추가 된 설명으로

을, 여기에 몇 가지 자세한 정보 :

모델의 특정 입력란에 대한 JSON :

Profile.all.collect { |p| { :name => p.name, :city => p.city } }.to_json 

이것은 루비 당신에게이 같은 배열을 줄 것이다 :

[ {:name = "John", :city => "Liverpool"}, {:name = "Jimi", :city => "Seattle"} ] 

그리고 JSON과 같은 :

[ {"name":"John", "city":"Liverpool"}, {"name":"Jimi", "city":"Seattle"} ] 
+0

가 공용 디렉토리에 json으로 캐시를 유지하는 것이 좋습니다. 아주 좋아 보인다. – Anatoly

+0

나는 이것이 의미가 있기를 바란다.하지만 내가 원했던 것은 내 프로파일 모델의 특정 필드만을 옵션으로 제공하기위한 나의 자동 완성을위한 것이다. 예를 들어,': name'은 옵션이 아니지만': city'라고합니다. 그래서 프로필의 특정 부분에서 JSON 출력을 만드는 방법에 대해 궁금합니다. – tvalent2