0

連絡先があり、has_many:phonesに連絡します。phoneテーブルにはphones_descという名前の列があり、ユーザーが保存した電話番号のタイプを含めます。

私の質問/ベストプラクティス

手動で提供されたオプション(「モバイル」、「職場」、「自宅」など)を選択して提供する必要があります。

-また-

...phones_typesという名前の新しいモデルを作成します。ここで、必要な値を追加して、それぞれに一意のIDを作成できます。次に、phone_descをphone_type_idに変更し、phones has_many:phone_typesを追加し、phone_typesテーブルに名前列を指定した後、次の操作を実行できます。

@phone = Phone.first
@phone.type.name

サイドノート

私は現在、最初のオプション(別のモデルではない)でそれを行っていますが、親オブジェクトを編集するときに値を選択するのに問題があります。つまり、電話番号を編集するときに、選択オプションで保存された値が選択されていません。

常に最初のオプションが選択されているため、ユーザーが気付かないうちに誤ってphone_descを変更する可能性があります。

最初のオプションが実際に行くためのより良い方法である場合、選択を介して電話の説明を編集するときにオブジェクトの値を選択された値にする方法について何か洞察がありますか?

4

2 に答える 2

0

オプション1は問題なく機能し、選択したオプションも機能することがわかりました。オプションパラメータを想定した順番で問題でした。

私が変更され:

<%= f.select :number_desc, '<option value="mobile">Mobile</option><option value="work">Work</option><option value="home">Home</option><option value="other">Other</option' %>

に:

<%= f.select :number_desc, [["Mobile", "mobile"], ["Work", "work"], ["Home", "home"], ["Other", "other"]] %>

そして出来上がり-選択されたものはうまく機能します。:)

于 2010-02-03T08:15:16.690 に答える
0

私はまだ電話の種類のために別のモデルを選びます。このようにして、後で他の種類の電話をより簡単に追加できます。また、i18nについて考えてみてください。「モバイル」を日本語に翻訳するときに、頭痛の種を減らすことができます。

于 2010-02-03T08:25:38.010 に答える