Как реализовать этот динамический выбор параметров с помощью «select_tag»? - PullRequest
0 голосов
/ 19 января 2011

У меня есть два объекта модели: Event и Task, они имеют связь один-ко-многим .

Модель события:

class Event < ActiveRecord
  has_many :Task

Модель задачи:

class Task < ActiveRecord
  belongs_to :Event

Мой контроллер имеет функцию индекса, которая возвращает список событий (@events), Возможно возвращает также список задач (@tasks):

class MyController < ApplicationController

  def index
    @events = Event.all
    @tasks.....

  end

На мой взгляд (index.html.haml) я определил поле множественного выбора для всех событий в столбце таблицы, как показано ниже:

%td
  =select_tag('events',options_from_collection_for_select(@events, 'id', 'name'), {:multiple=>'multiple'})

выходной код вышеупомянутого тега select_tag:

<td>
<select id="events" multiple="multiple" name="events">
    <option value="1">Event 1</option>
    <option value="2">Event 2 </option>
</select>
</td>

В другом столбце таблицы мне нужно другое поле для множественного выбора для tasks , которое выглядит как события поле множественного выбора, НО ключевой особенностью является то, что , содержимое задач опций выбора динамически изменяется в зависимости от того, событие или события пользователь выбрал из поля events multi-select.

Например, предположим, что event_1 связан с task_1 и task_2, еслипользователь щелкает мышью по событию_1, в поле множественного выбора задач в качестве параметров, доступных для выбора пользователем, будут отображаться задача_1 и задача_2.

Как реализовать эту функцию в рельсах?Я использую Rails 3. Полагаю, что эта функция нуждается в магии ajax, но я не знаю, как ее реализовать, лучше, если кто-нибудь сможет привести простой пример по этому вопросу.Спасибо!

1 Ответ

2 голосов
/ 20 января 2011

Проверьте этот пример именно то, что вам нужно для ваших моделей http://pullmonkey.com/2008/03/30/dynamic-select-boxes-ruby-on-rails/.

И я бы порекомендовал вам сохранить логику для ваших моделей. Я имею в виду

 class Event < ActiveRecord
     has_many :tasks # also notice...no capital "t"
 end

То же самое для модели задачи

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