Rails:form_for复选框设置为true或false,无论该框被选中/取消选中

2024-04-17

我有一个名为 users 的模型,它有 2 个布尔属性send_email and send_text。我有一个编辑用户模型的表单,我希望它根据该框是否选中/取消选中将这些属性设置为 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


当您的表单作用于对象时,Rails 将为您执行此操作,只需将所有额外的内容从标签中删除,如下所示:

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

一切都应该按照您的预期开始工作。如果该属性为 true,则复选框将被选中,反之亦然,提交表单时的选中状态将影响该属性。你的其余代码都很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:form_for复选框设置为true或false,无论该框被选中/取消选中 的相关文章