2011-01-25 11 views
0

私は人の現在の可用性のためのさまざまな値を保持している形で、radio_button_tag持っている:オフィスO休暇のうち、oを利用可能なOデータベースの設定値によってradio_button_tag値を設定するために、任意の可能な方法

マイクDonnallを

元はフォームを開いて値を選択した後、このPersonのStatusテーブルに値を設定します。

しかし、フォームを再度開いて現在のステータスをバケーションから利用可能に変更する機能もあります。

ラジオボタン:チェックはカスタムメソッドを受け入れるように変更することができますが、同様の投稿で何かを見つけましたが、そのラジオボタンをDBの値。

私のコード今のところ、おそらく暗闇の中で刺す:

ビュー:

<% @people.each do |p| %> 
    <% @statuses.each do |s| %> 
     <%= "#{p.name}" %> 
     <%= "#{s.status_name}" -%><%= radio_button_tag ['person', p.id], ['status',  
      s.id], checked?(p.id) %> 
<% end %> 
<% end %> 

ヘルパー:

def checked?(person) 
    @person = person 
    @status = Status.find_by_sql(['select status_id from statuses where person_id = ?, @person]) 

    if @result 
return true 

エンド

あなたはイムを少し見ることができるようにここで失われましたが、このメソッドはチェックする必要があるチェックボックスの値を返すはずですが、Im wそれがチェックされた機能性のためにオンデマンドであるのかどうかは、それが真実か偽であるかだけに限定されますか?

したがって、persons.status.idがtrueかfalseかをチェックします。

答えて

1

それは人とステータスの間に、あなたは以下の関係のセットアップ、あなたのヘルパーのSQLからのようだ:あなた、

person = Person.first 
person_status = person.status 

をその知識を使用して:あなたはこのように1つの所与の人の状態にアクセスすることができ

​​

希望のビューの結果は非常に簡単になります。

<% @people.each do |p| %> 
    <p><%= "#{p.name}" -%> 
    <% @statuses.each do |s| %> 
    <%= "#{s.status_name}" -%> 
    <%= radio_button_tag ['person', p.id], 
         ['status', s.id], 
         (p.status == s) ? true : false %> 
    <% end %> 
<% end %> 

rseはロジックをヘルパーに抽出しますが、それは必要ではないようです。

個人的には、これは私が情報をユーザに提示する方法ではなく、1行の情報には重すぎます。その人物の名前をpタグに入れ、ステータスにはulタグを使用することをお勧めします。

+0

これはすばらしいのでとても簡単です! –

+0

私は本当にこの種の機能性があまりよくないか、本やサイトなどで全然文書化されていない理由を理解していません。 –

+0

天国はあなたがそれをどのように理解したかを知っている必要があります!もう一度ありがとう –

関連する問題