преобразование данных в формат JSON в рельсах - PullRequest
1 голос
/ 28 декабря 2011

Мое требование - реализовать функцию автозаполнения в моем приложении rails.Мне нужно преобразовать @testers в коде моего контроллера ниже в формат json.

def new
  @release = Release.new
  @ic_ids = params[:ic_ids] ? params[:ic_ids] : []
  @testers = User.find_by_sql("select * from users where id in(select user_id from user_role_assignments where role_id in (select id from roles where name like 'Tester')) order by name").paginate(:page=>params[:page],:per_page=>30)   
  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @release }
  end
end

На мой взгляд, код я попробовал это:

%td.grid.full_panels
    -table_panel "Assign Testers" do
      %table
        %th Name
        -puts "testers=#{@testers}"
        = form.label :tester_tokens, "Testers" 
        = form.text_field :tester_tokens,:class => 'autocomplete'
 :javascript
  data = #{testers.to_json} 

Я получаю неопределенный для данных.

Пожалуйста, помогите мне здесь.

Спасибо, Рамя.

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Чтобы создать источник json, вы можете добавить format.json в цикл response_to, например:

def index
     @objects=Model.where("name LIKE ?", "%params[:q]%") || Model.all
     respond_to do |format|
          format.html # index.html.erb
          format.json { render :json => @objects.map(&:attributes) }
     end
end

Если вы не хотите извлекать все данные, доступны опции only и except.Вы должны быть в состоянии использовать это для большинства плагинов автозаполнения!

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

1 голос
/ 28 декабря 2011

Почему data =?Насколько я понимаю, это недопустимый JavaScript-код.

Правильный синтаксис HAML:

...