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

1 つの可能性は、ヘルパーを使用してコレクションを渡すselect代わりに使用することです。を使用すると、html を 3 番目の属性として渡すことができます。ここを参照してください: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_selectcollection_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 に答える