2016-12-19 10 views
0

Book.extended_fields = {}ハッシュカラムを充填するために選択フォームヘルパーを使用

<%= text_field_tag("book[extended_fields][description]", nil, class: "form-control") %> 

の選択バージョンは何ですか?

私は

<select class="form-control" name="book[extended_fields][description]"></select> 

これは、動的に作成されたフィールドを使用してフォームをレンダリングしますその部分のためにあるようなものを作成していますよ。

kが作成されるフィールドのコレクション内の項目を表し
<%= text_field_tag("book[extended_fields][#{k}]", nil, class: "form-control") %> 

:だから、最終的には、それはのようなものだループになります。

+0

なぜあなたはjavascriptではなくレールで動的コンテンツを構築しようとしていますか? –

+0

明快さに欠けて申し訳ありません。これらのフィールドは、データベースのハッシュ・カラムに基づいて作成されます(したがって、ハード・コーディングされた一意の属性を持つことはできません)。ただし、ビューがレンダリングされた後ではなく、ビューでレンダリングされます。 –

+0

ああ、大丈夫です。あなたはcollection_selectを使ってみましたか?何か '%= collection_select( 'thing'、 'status'、@book、:first、:last)%>' –

答えて

0

あなたの主な質問に答えるには、select_tagがあなたが探しているhtml選択オプションを作成します。文書hereがあります。

正しい構造は、私はあなたの質問を誤解している場合、私に教えてください、このような

select_tag(name, option_tags = nil, options = {}, {}, {:class => 'form-control'}) 

ようにレイアウトされなければなりません。

+0

あなたの助けをありがとう。私は選択ヘルパーを使用しようとしていました。だから、私は何かをしようとした –

+0

メインの質問に私のコメントを参照して、コレクションの選択は、ハッシュを使用し、あなたのキーを表示することができます、値|オプション –

0

私はそれを使用する代わりにレールと戦っていました。私は、選択ヘルパーを使用しようとしていたし、名前部分に複数の引数を使用して属性に連結させる方法を理解できませんでした。答えは単にname属性を自分で定義することでした。

<%= select("book", "description", (options), {include_blank: true}, class: "form-control", name: "book[extended_fields][description]") %>