Rails 3.0 アプリで、ユーザーが最大 5 つのキーワードと値のペアを作成して単一のフィールドに格納できるフォーム要素を追加したいと考えています。キーワードはアプリではなくユーザーによって定義されるため、私が調査した他のSOの質問は機能しません。これらの例では、コードが事前にキーを「知っている」必要があるためです。
キーは常に 1 つの単語であり、値は常に 1 つの短い文です。
したがって、1 人のユーザーは、{'snow' => 'I like snow', 'ski' => 'I like to ski'} に相当するものを入力したいと思うかもしれません。
{'red' => '私の好きな色は赤です', 'yellow' => '黄色い雪を食べないでください'}
モデルの serialize :options, Hash をデータベースに使用して、単一のテキスト フィールドにハッシュを格納/取得する方法を取得します。
私が得られないのは、ユーザーが実際にjsonまたはハッシュ形式でtext_areaフィールドに入力しなくても、ハッシュを作成/編集できるようにする簡単な方法です。
BRUTE FORCE: 私は固定された少数の許可されたペア (5) を持っているので、私の見解では、0 ~ 5 のペアを入力するための 10 のフィールドを提供し、フォームを保存してロジックを表示し、何らかの方法でペアを移動します。それらの10フィールド。しかし、これらの 10 個のフィールドをシリアル化されたデータとの間でマッピングするロジックがわかりません。どんな助けでも大歓迎です。
ELEGANT: もちろん、hash-edit フォーム要素を動的に生成する方法はさらに優れています。(Rails 3.2にはその機能があると読んだと思いますが、これは多くの可動部分(複数の外部サービスとの統合)を備えた大規模で複雑なアプリであるため、現在アップグレードすることはできません。そのため、新しいRailsに更新する予定はありません4~6ヶ月。)