2011-10-20 14 views
1

として引数を使用すると、私の見解ですデータベースをチェックして、ユーザーが以前に自分の年齢を表示するかどうかを確認し、そうであればチェックボックスがチェックされます。そうでなければ、そうではない。今は単にfalseを渡しますが、ヘルパーで "@ user.preferences.age_visible"を書き出すとtrueになります。しかし、もちろん、私は他の属性のためにヘルパーを使用できるようにしたい。Railsはモデル属性ここで

答えて

0

Davidbの答えは正しいですが、メソッドを動的に呼び出す場合は、sendを使用できます。例えば。あなたのヘルパーをより簡潔にする

@user.preferences.send(:age_visible) 

ほんの少しヒント:このようにあなたは、このようなあなたのヘルパーを書き換えることができるように

@user.preferences.send(pref) == "1" 

すでに、ブール値を返します。

def checked?(pref) 
    @user.preferences.send(pref) == "1" 
end 
+0

迅速な答えをありがとう。まさに私が探していたもの。 – Lee

+0

@Lee、実際に私は以下のDavidbの答えが良いと思います。 – Mischa

+0

下記の返信を参照してください...私は各属性に別々の列を使用していませんが、OpenStructを使用して環境設定列を使用しています。 – Lee

1

あなたは追加のヘルパーは必要ありません。データベースにブール値フィールドを作成すると、ActiveRecordsはtrueまたはfalseに設定されているかどうかを問い合わせるメソッドを提供します。試してみてください:

<%= check_box_tag :age_visible, 1, @user.age_visible? %> 
+0

トグルする属性ごとに別の列を作成する必要があるため、ブール値フィールドを使用していません。代わりに私は、情報を持つ各ユーザーのための設定の列を持って...私はそれをテストし、@ user.preferences.age_visible == "1"は、ビューで動作しますが、ヘルパーはきれいだ。 – Lee

関連する問題