0

変数の値に基づいて選択リストに値を設定したい。

ここの変数は@email_setting.frequency. ビューでは、コードは次のようになります。

<%= select('email_setting', 'frequency','<option value="1">Daily</option>
                <option value="2">Immediately</option>
                <option value="3">Every Monday</option>
                <option value="4">Every Tuesday</option>
                <option value="5">Every Wednesday</option>
                <option value="6">Every Thursday</option>
                <option value="7">Every Friday</option>
                <option value="8">Every Saturday</option>
                <option value="9">Every Sunday</option>',
                :class=>'fl-space2 required size-120',
                :selected=>@email_setting.frequency) %>

以下のいくつかのバリエーションを試してみましたが、うまくいきませんでした。

これを正しく機能させる方法に関するアドバイスはありますか?

ありがとう

4

1 に答える 1

3

まず、@email_setting.frequency の値を確認します。実際、最初の 2 つのパラメーターとして「email_setting」、「frequency」を指定すると、選択される値は になります@email_setting.frequency。私はそれが実際には整数(のように1)であり、オプションの値として文字列を提供していると思います(のように"1")。選ばれない理由はそこにあるはずです。試す

<%= select('email_setting', 'frequency', [['Daily', 1],['Immediately', 2], ..], {}, :class=>'fl-space2 required size-120' %>

また、select の 4 番目のパラメーターは でoptionsあり、5 番目のパラメーターはhtml_optionsです。optionsしたがって、selected、class などの html オプションを指定する場合は、4 番目のパラメーターを空のハッシュとして提供することにより、5 番目のパラメーターとして提供する必要があります。本当に選択したものも提供したい場合は、次のようにする必要があります。

<%= select('email_setting', 'frequency', [['Daily', 1],['Immediately', 2], ..], {}, :class=>'fl-space2 required size-120', :selected => @email_setting.frequency %>

しかし、あなたの場合は最初のもので十分です。

レールAPIの選択を参照してください

于 2011-03-16T02:11:57.813 に答える