2011-03-28 6 views
0

私は子の属性を受け入れる親モデルを持っています。チェックボックスがチェックされていないことを確認します。

class User < ActiveRecord::Base 

accepts_nested_attributes_for :spec 

attr_accessible :name, :spec_attributes 

私は3つのモデルの情報を取得するフォームを持っています。私は一般的なform_tagを使用します。コントローラ

@user = User.find(session[:user_id]) 
    if @user.update_attributes(params[:user]) 

    do something. 
    end 

データベースが更新されつつあり、すべてが動作しているようだで

<% form_tag(action) do %> 
. 
. 
. 
    <% fields_for "user[spec_attributes]" do |spec_form|%> 
    <%= spec_form.check_box :alert_greeting %> 
    <%= spec_form.label :alert_greeting, "Email me when new greetings are posted" %> 
    <% end %> 

<% end %> 

しかし、再度編集するフォームに戻ると、チェックボックスの値が1になっていても、チェックボックスはオンになっていません。

チェックボックスがオンになっていると表示されるようにチェックボックスを表示する方法に関するアイデアはありますか?

ありがとうございます。

+0

のパラメータの値をチェックして確認オプションを追加して試してみてください: – Ashish

+0

どのようにチェックボックスの値があることを見ているのalert_greeting '1'?これは新しいフォームか、データベースの値が1として保存されているかどうかです。 – naven87

+0

ソースを見ると、値は1ですが、非表示フィールドは0に設定されています。ターミナルとデータベースに格納されます。私はちょうど値= 1の場合、フォームに表示されない理由を理解していない – chell

答えて

0

あなたが呼んでいるユーザー内の特定のspecレコードを参照する必要があります。あなたは、あなたの編集コントローラのアクションに(必ずしも保存されていない)ユーザー用に構築された非nilの仕様オブジェクトを持っていることを確認する必要があります

<% fields_for @user.spec do |spec_form|%> 

<% fields_for "user[spec_attributes]" do |spec_form|%> 

を変更してみてください。

+0

ブライアンに感謝します。私がすると、生成されるパラメータは以下のようになります:パラメータ:{"@ user.spec" => {"alert_greeting" => "0"}しかし、私はparams = {:user => {:name => 'Jack'、:spec_attributes => {:alert_greeting => '1'}}を取得したいと思います。更新されていないようです。何か案は? – chell

0

次のような2つのfields_for呼び出し使用して属性とネストされた属性の操作を行うことができます

<%= form_tag(action) do %> 
    ... other form tags ... 
    <%= fields_for :user, @user do |f| %> 

    <%= f.text_field :first_name %> 
    <%= f.text_field :last_name %> 

    <%= f.fields_for :spec do |s| %> 
     <%= s.check_box :alert_greeting %> 
     <%= s.label :alert_greeting, "Email me when new greetings are posted" %> 
    <% end %> 
    <% end %> 
<% end %> 
+0

申し訳ありませんが、私は3つのモデルからデータを取得していることを忘れていました。 – Kelly

+0

お前のロックスターだよ。ありがとう、私はそれがトリックだと思う。私はそれを試み、あなたに戻ってくるでしょう。 – chell

関連する問題