RoR使用Chained选择jQuery插件

时间:2012-05-04 18:44:58

标签: jquery ruby-on-rails

我正在尝试使用jQuery链式选择。 这是所需的HTML示例(不是我正在使用的代码 - 但是,会让您了解jquery如何要求HTML查看):

<select id="mark">
  <option value="">--</option>
  <option value="bmw">BMW</option>
  <option value="audi">Audi</option>
</select>
<select id="series">
  <option value="">--</option>
  <option value="series-3" class="bmw">3 series</option>
  <option value="series-5" class="bmw">5 series</option>
  <option value="series-6" class="bmw">6 series</option>
  <option value="a3" class="audi">A3</option>
  <option value="a4" class="audi">A4</option>
  <option value="a5" class="audi">A5</option>

我的RoR应用程序包含客户端,项目和任务 我需要任务选项中的类来包含project.id

现在我正在使用Simple-Form,代码如下:

<%= collection_select(:project, :projname, Project.all, :id, :client_project, {}, {:class=>'project_select'}) %>
<%= f.association :task, :label_method => :taskname, :label => 'Task' %>

该集合列出了项目(我已将客户端连接到项目)。所以HTML的第一部分很好。

但是,如何让关联代码使用project.id作为每个任务的类?

谢谢!

2 个答案:

答案 0 :(得分:1)

我偶然发现了你的问题,我知道它已经过时了,但我已经通过以下方式使用simple-form解决了这个问题:

= form.input :task do
    = form.select :task_id, Task.all.map { |t| [t.taskname, t.id, { :class => t.project_id }] }, :include_blank => true

本质上,您使用simple_form包装器input,但定义了一些在包装器中使用的自定义HTML(在这种情况下,它使用Rails select表单帮助器)。 Rails助手允许您根据@ pduersteler的答案传递课程。

我在我的观点中使用HAML,以防万一不清楚:)

答案 1 :(得分:0)

一种可能性是使用select代替collection_select,并使用select帮助将您的集合传递给options_for_select。使用options_for_select允许将html作为第三个属性传递。见这里:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select

控制器:@projects = Project.all.map{ |p| [p.projname, p.id, {:class => p.id}] }
查看:select(:project, :projname, options_for_select(@projects), {:class=>'project_select'})

未经测试,可能需要修改