製品の設定のグループがあります。設定ごとに、設定ステータスを表す「有効」と「無効」のラジオボタンのペアを追加します。ユーザーはボタンをクリックして、current_settingテーブルの設定のステータスを変更できます。2つの製品AとBがあります。 Aに関連するすべての設定が「有効」で、Bのすべてのステータスが「無効」です。私の問題は、Webページを更新するときに、AとBのチェックされたラジオボタンが同じであるということです。これらはすべて「無効」でチェックされます。
次の関数をテストしました:CurrentSetting.setting_enabled?およびDefaultSetting.default_enabled?。テスト結果は、これらの関数が期待される結果を返す可能性があることを示しています。つまり、Bが偽(「無効」)の場合、Aに関連するすべての設定の有効ステータスが真(「有効」)です。ただし、Aのボタンは「無効」でチェックされています。
Webページを更新した後、ラジオボタンに各設定の現在の有効なステータスを表示させるにはどうすればよいですか?誰かが私にお願いできますか?
ビューのrhtmlは次のとおりです。
<%@settings.each do |setting|%>
<%setting_enabled = CurrentSetting.setting_enabled?(@product_id,setting.id)%>
<!-- Setting on -->
<%= radio_button_tag("settings[#{setting.key_name}]", "enabled", :checked=> setting_enabled) %>
<!-- Setting off -->
<%= radio_button_tag("settings[#{setting.key_name}]", "disabled", :checked=> !setting_enabled) %>
<%= "#{setting.display_name}" %>
<br/>
<%end%>
モデルcurrent_setting.rbの関数は次のとおりです。
def self.setting_enabled? db_id, default_setting_id
current_setting = CurrentSetting.find(:first,
:conditions => ['db_id = ? and default_setting_id= ? ', db_id, default_setting_id ])
if current_setting==nil
return DefaultSetting.default_enabled?(default_setting_id) #return default enabled state for this setting
else
return current_setting.enabled
end
end