2012-04-28 11 views
1

私は、タグが配列になることを期待しているacts_as_taggable_onを使用しているレガシープロジェクトに取り組んでいます。私は選択欄を持っていて、カテゴリーのフィールドでコース上のタグを選択することができます。大量割り当てを作成する唯一の方法は、パラメータがparams = {:course => {:categories => ['Presentation']}}の場合です。私は現在、このヘルパーでビューをしました:Rails Select Helperからの配列としての配列

<%= f.select 'categories', ['Presentation' , 'Round Table' , 'Demo', 'Hands-on'] %> 

くれparams = {:course => {:categories => 'Presentation'}}のようなパラメータを与えるだろうどの。 tag gableとしてのActsは、コレクション以外のものを渡すことはできません。

私はcategories[]からcategoriesを変更しようとしましたが、その後、私はこのエラーを取得する:

undefined method `categories[]' for #<Course:0x007f9d95c5b810> 

誰がコントローラに配列を返すために、私のselectタグをフォーマットする正しい方法を知っていますか?私はRailsを使用しています。3.2.3

答えて

0

私はacts_as_taggable_onで動作しませんでしたが、この単純なハックが適していますか?あなたは大量割り当ての前にそれを置くべきです。

だけONEタグの選択を可能にしようとしている場合
category = params[:course][:categories] 
params[:course][:categories] = [category] 
+0

それは私が探しているものではなく、レールは選択されたパラメータを配列経由で渡すことをサポートする必要があります。 – Schneems

0

、あなたができる:

<%= f.select 'categories', [['Presentation'] , ['Round Table'] , ['Demo'], ['Hands-on']] %> 

各1つの項目の配列が戻り値の表示値のための最初の、そして最後になります、この場合、配列の最初の要素は、配列が1つの要素である場合の最後の要素と同じであるため、同じものが返されます。

+0

この構文はうまくいかず、レールは配列の文字列を引き出します。だから '' 'プレゼンテーション ''' 'ただ' 'プレゼンテーション ''に行く – Schneems

0

selectと似ているとは思いません。

私が正しく理解していれば、一つの選択肢ではなくselect_tagを使用することで、ちょうどあなたがのparamsで選択をする場所について、明示的であるかもしれない:

<%= select_tag 'course[categories][]', options_for_select(['Presentation' , 'Round Table' , 'Demo', 'Hands-on']) %> 

あなたのparamsあなたがそれらを必要とする方法を取得するべきです。ここで

0

が、私は私のプロジェクトの1のために使用してんだよ:html_options[:name]なければ

<% options = { include_blank: true } %> 

<% html_options = { required: true, name: "#{f.object_name}[#{resource.id}][days][]" } %> 

<%= f.select :days, DAYS, options, html_options %> 

、Railsはselectタグの名前を処理し、

service[service_add_ons_attributes][11][days] 

のようなものを出してくれるが、私は

を必要とします
service[service_add_ons_attributes][11][days][] 

だから私はそれを無効にします。

希望に役立ちます。

関連する問題