1

我正在尝试使用 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 作为每个任务的类?

谢谢!

4

2 回答 2

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 以在包装器中使用(在本例中,它使用 Railsselect表单帮助器)。Rails 助手允许您按照@pduersteler 的回答通过课程。

如果不清楚,我会在我的观点中使用 HAML :)

于 2014-11-07T20:40:40.850 回答
0

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

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

未经测试,可能需要修改

于 2012-05-04T22:11:41.517 回答