Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Rail+ExtJS (extjs-mvc gem): помогите разобраться, Как использовать несколько Store? 
:(
    Опции темы
maep
Дата 16.3.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.6.2008

Репутация: нет
Всего: нет



Коллеги, продолжая попытки сделать красивое и юзабельное веб-приложение, начал пытаться использовать ExtJS. Нашел следующий gem с туториалом 

<a href ="http://www.extjs.com/blog/2009/09/30/ext-js-on-rails-a-comprehensivetutorial/">Ссылка</a>

 Вроде все понятно, до шага 7 про Direct Router и т.п. Редактируемый грид сделать получилось. Задача: сделать грид, редактируемый, с выбором одного поля посредством комбика. Впоследствии задача упростилась до "сделать грид и рядом комбик, берущий данные из другой таблицы" - потому как это тоже не получается. Есть модель Norm, belongs_to Goal. Сама по себе она показывается прекрасно, примерно таким путем: 

Контроллер 

Код

  def index
    @norms = (Norm.find :all, :order => "goal_id").collect {|n| n.to_record}
    @goals = (Goal.find :all, :order => "name").collect {|g| g.to_record}

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @norms }
      format.json { render(:json => {:success => true, :data => @norms })}
    end

  end


Представление 

Код

<%= javascript_include_tag 'app/norms/NormsGrid' %>

<%= extjs_store(
:controller => 'norms',
:writer => {'encode' => false},
:config => {
'autoLoad' => true,
'autoSave' => true,
'restful' => true
}).render %>
<div id='my_grid'></div>
<% grid = extjs_component(
'xtype' => 'norms-grid',
'storeId' => 'norm',
'height' => '222',
'title' => 'Norms',
'iconCls' =>'"silk-group',
'renderTo' => 'my_grid'
)
extjs_onready(grid)
%>



Это отлично работает. Пытаюсь положить рядом (пока не встраиваем его в грид) комбик. 
Добавляю туда же 

Код

<%= extjs_store(
:controller => 'norms',
:model => 'goal',
:writer => {'encode' => false},
:config => {
'autoLoad' => true,
'autoSave' => true,
'restful' => true
}).render %>
<div id='my_combo'></div>
<% combo = extjs_component(
"xtype" =>'combo',
"store" => 'goal',
"anchor" => '100%',
"fieldLabel" => 'Assigned to',
"storeId" => 'goal',
"displayField" => 'name',
"valueField" => 'id',
"mode" => 'local',
"forceSelection" => true,
"triggerAction" => 'all',
'renderTo' => 'my_combo'
)
extjs_onready(combo)
%>



В итоге получаю пустой комбик с числом пустых строк, равным числу записей в табличке norms. Наверное, дело в том, что, в контроллере мы делаем так:

  format.json { render(:json => {:success => true, :data => @norms })}

Я добавил ,:goal => @goals, И в консоле FireBug вижу следующее: 

{"goal":[{"created_at":null,"name":"HH","updated_at":null,"id":4},{"created_at":"2009/11/11 23:28:25 +0700","name":"Otoplenie","updated_at":"2009/11/11 23:28:25 +0700","id":2},{"created_at":null,"name":"Remont","updated_at":"2009/11/11 23:28:45 +0700","id":3},{"created_at":null,"name":"Stroitelstvo","updated_at":"2009/11/11 23:28:14 +0700","id":1}],"success":true,"data":[{"created_at":"2010/03/15 09:35:22 +0700","goal":{"created_at":null,"name":"Stroitelstvo","updated_at":"2009/11/11 23:28:14 +0700","id":1},"goal_id":1,"value":20.0,"interval":1,"updated_at":"2010/03/15 09:40:09 +0700","id":10020},{"created_at":null,"goal":{"created_at":"2009/11/11 23:28:25 +0700","name":"Otoplenie","updated_at":"2009/11/11 23:28:25 +0700","id":2},"goal_id":2,"value":150.0,"interval":25,"updated_at":"2010/03/15 16:53:49 +0700","id":1001},{"created_at":"2009/11/11 23:32:40 +0700","goal":{"created_at":null,"name":"Remont","updated_at":"2009/11/11 23:28:45 +0700","id":3},"goal_id":3,"value":44.0,"interval":5,"updated_at":"2010/03/15 16:53:19 +0700","id":10002}]}

Но оба элемента ExtJS берут данные из раздела data. И еще смущает, что я вижу два запроса c одинаковыми данными в json. Что я делаю не так? 
Как завести несколько Store для разных элементов?
Заранее спасибо! 


Это сообщение отредактировал(а) maep - 16.3.2010, 09:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.