29

send_email私は2つのブール属性を持つユーザーと呼ばれるモデルを持っていますsend_text. User モデルを編集するフォームがあり、ボックスがチェックされているかどうかに応じて、これらの属性を true/false に設定したいと考えています。これが私のフォームです

<%= form_for(@user) do |f| %>
    <div class="field">
        <%= f.label :email %> <br />
        <%= f.text_area :email %> <br />
    </div>
    <div class="field">
        <%= f.label :cell %> <br />
        <%= f.text_area :cell %> <br />
    </div>
    <div class="field">
        <%= f.label "Get Email" %> <br />
        <%= f.check_box :send_email, {}, true, false %> <br />
    </div>
    <div class="field">
        <%= f.label "Get Text" %> <br />
        <%= f.check_box :send_text, {}, true, false %> <br />
    </div>
    <div class="actions">
  <%= f.submit "Submit", class: "button small radius" %>
  <%= link_to "go back", @user, class: "button small radius secondary" %>
</div>
<% end %>

そして、これがのupdateアクションですuser_controller

def update
    @user = User.find(params[:id])
    @user.update_attributes(params[:user])
    redirect_to @user
end

フォームと更新は完全に機能しているように見えますが、send_email または send_text ボックスをオンにしてこのフォームを送信すると、ユーザー モデル (send_email、send_text) の属性が false に変更されません。

4

4 に答える 4

57

Rails は、フォームがオブジェクトに対して動作しているときにこれを行います。

<div class="field">
    <%= f.label "Get Email" %> <br />
    <%= f.check_box :send_email %> <br />
</div>

そして、すべてが期待どおりに機能し始めるはずです。属性が true の場合、チェックボックスにチェックが入ります。逆の場合、フォーム送信時のチェック状態は属性に影響します。コードの残りの部分は問題ありません。

于 2013-05-30T19:31:01.123 に答える