如何使用“select_tag”在视图中实现此动态选择选项?

时间:2011-01-19 20:07:28

标签: ruby-on-rails ruby-on-rails-3

我有两个模型对象EventTask,它们具有一对多关联。

活动模式:

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>

我想要的是在另一个表格栏中我有任务的另一个多选字段,它看起来就像事件多选字段,但是关键功能任务选项的内容会根据从事件中选择的事件或事件用户动态更改多选字段。

例如,假设event_1与task_1和task_2相关联,如果用户鼠标单击event_1,则任务多选字段将显示task_1和task_2作为可供用户选择的选项。

如何在rails中实现此功能?我正在使用Rails 3.我想这个功能需要一些ajax魔法来玩,但我不知道如何实现它,如果有人可以在这个问题上给出一个简单的例子,那就更好了。谢谢!

1 个答案:

答案 0 :(得分:2)

检查此示例正是您的模型所需的 http://pullmonkey.com/2008/03/30/dynamic-select-boxes-ruby-on-rails/

我建议你为你的模特保留一个逻辑。我的意思是

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

任务模型相同