2011-12-28 13 views
1

Мое требование - реализовать функцию автообновления в моем приложении rails. Мне нужно преобразовать @testers в мой код контроллера ниже в формат json.преобразование данных в формат 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} 

Я получаю неопределенными данных.

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

Thanks, Ramya.

ответ

3

Чтобы создать источник JSon вы можете добавить format.json к петле respond_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, вы сможете разграничить результаты по данной схеме.

+0

Привет Давид, спасибо, что нашли время, чтобы ответить на меня. В моем случае @testers уже извлекается из разных таблиц с sql query.so, пожалуйста, помогите мне в том, как использовать его в вышеуказанном формате. Также помогите с тем, как использовать это в файле .js? – ramya

+0

также сообщите мне, где передать параметр «q» – ramya

+1

Вы также можете отобразить любые другие данные, просто перекомпонуйте @objects любым другим массивом объектов, которые должны быть обработаны с помощью json. Если вы просто извлекаете эти вещи без возможности фильтровать 'q'isnt need! – davidb

1

Почему data =? Насколько мне известно, это недопустимый javascript.

Правильный синтаксис HAML будет:

:javascript 
    #{testers.to_json} 
+0

hi berkes, thanks много для ответа на меня. Пожалуйста, помогите мне в том, как использовать этот переданный json в моем сценарии js. – ramya

+0

В вашем коде вы пытались распечатать json прямо в своем HTML; но не смог этого сделать, из-за неправильного HAML. Мой ответ просто исправить то, что вы пытаетесь достичь. Кажется, вы пытаетесь что-то еще. Обновите свой ответ с помощью более высокоуровневой цели: чего вы пытаетесь достичь. Вместо этого подробный вопрос об определенной ошибке вы получили. – berkes

+0

Я не пытаюсь распечатать json. Я пытаюсь передать преобразованный json в .js-файл – ramya

Смежные вопросы