2012-04-03 5 views
0

Я пытаюсь создать текстовое поле автозаполнения в приложении rails. Моя проблема касается настроенного источника данных.передать массив в формат json в rails для автозаполнения jquery

Вот как я получаю данные: я смотрю на имя контактного лица, идентификатор и добавить категорию, чтобы показать его на автозаполнения с помощью this example

Если пользователь является другом, то категория контактов, в противном случае категория является другими

@result = Array.new 
# find the current user id when its viewed as a contact 
@current_contact = Contact.find_by_user_id(current_user).id 
#go through all the contacts 
Contact.order('name ASC').each do |a| 
    #if the current contact is a friend of the user 
    if Relationship.find_by_user_id_and_contact_id(current_user, a) 
    #add it to the array with the 'contacts' category 
    @result << [a.name, a.id, 'contacts'] 
    else 
    #if its not a friend, and its not himself, add it to the array with the 'others' category 
    unless @current_contact == a.id 
     @result << [a.name.to_s,a.id, 'others'] 
    end 
    end 
end 

Как вывести этот формат, так что функция автозаполнения может принять его в качестве источника данных?

пример показывает формат я ищу, что это, кажется, JSon Отформатируйте

var data = [ 
{ label: "andreas andersson", category: "People" }, 
{ label: "andreas johnson", category: "People" } 
]; 

Но я не могу конвертировать мой вывод, что один. Я попытался

@result.to_json 

вар данные = [[" AL Tohtori ", 279, " другие "], [" Abat Каринэ ", 296, " другие "]]

с

@result.map {|r| {:label => r[0], :value => r[1], :category => r[2] } } 

У меня тоже не может быть этого.

Любые предложения?

Спасибо!

ответ

0

Вы можете попробовать сочетание подходов:

@result.map {|r| {:label => r[0], :value => r[1], :category => r[2] } }.to_json 

Если это не поможет, возможно, было бы лучше использовать библиотеку просмотра JSON как JBuilder. Есть хороший скринкаст об этом here.