передать массив в формате json в рельсах для автозаполнения jquery - PullRequest
0 голосов
/ 03 апреля 2012

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

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

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

@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

var data = [["AL Tohtori", 279, "others"], ["Abat Karine", 296, "others"]]

с

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

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

Есть предложения?

Спасибо!

1 Ответ

0 голосов
/ 03 апреля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...