2012-05-04 11 views
1

jQuery連鎖選択を使用しようとしています。 これは必要とされているHTMLのサンプルである(ない私が使用しているコード - しかし、あなたはjqueryのは、見てHTMLを必要とどのようにアイデアを与えるだろう):連鎖選択を使用したRoR jQueryプラグイン

<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

を含むようにタスクオプションでクラスを必要とする クライアント、プロジェクト、およびタスクを持っており、コードは次のようになります。

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

コレクションにはプロジェクトがリストされています(クライアントをプロジェクトに連結しました)。したがって、HTMLの最初の部分は問題ありません。

しかし、各タスクのクラスとしてproject.idを使用するための関連付けコードを取得するにはどうすればよいですか?

ありがとうございます!

答えて

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の答えに従ってクラスを渡すことができます。

私は自分の意見にハムを使用しています。それは明確ではない場合のために:)

+0

ありがとうございます! – Reddirt

+0

あなたは大歓迎です:D –

0

collection_selectの代わりにselectを使用し、options_for_selectヘルパーを使用してコレクションをselectに渡すことも考えられます。 options_for_selectを使用すると、htmlを3番目の属性として渡すことができます。ここを参照してください: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'})

テストされていないと

関連する問題