1

acts_as_taggable_onタグが配列に入ることを期待するレガシープロジェクトに取り組んでいます。ユーザーがカテゴリと呼ばれるフィールドでコースのタグを選択できるようにする選択ボックスがあります。一括代入 create が機能する唯一の方法は、 params が次のようになっている場合params = {:course => {:categories => ['Presentation']}}です。私は現在、このヘルパーでビューを持っています:

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

のようなパラメータが得られますparams = {:course => {:categories => 'Presentation'}}。タグ gable として機能するため、これは機能しません。コレクション以外のものが渡されることを処理できないようです。

に変更しようとしcategoriesましたが、次のcategories[]エラーが発生します。

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

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

4

4 に答える 4

0

私はacts_as_taggable_onを使っていませんでしたが、この単純なハックはあなたに適しているでしょうか? mass-assignment の前に置く必要があります。

category = params[:course][:categories]
params[:course][:categories] = [category]
于 2012-04-28T20:54:52.877 に答える
0

1 つのタグのみを選択できるようにする場合は、次のようにします。

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

配列が 1 つの要素である場合、配列の最初の要素は最後の要素と同じであるため、1 つの項目配列のそれぞれは、最初に表示値を、最後に戻り値を持ちます。この場合、どちらも同じものを返します。 .

于 2012-04-28T20:56:10.253 に答える
0

select にはそのオプションがないようです。

私が正しく理解していれば、代わりに select_tag を使用し、params で選択したい場所を明示することが 1 つのオプションかもしれません。

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

これにより、必要な方法でパラメーターが取得されるはずです。

于 2012-05-02T19:44:03.857 に答える