2013-05-30 137 views
19

我有一个名为users的模型,它具有2个布尔属性send_emailsend_text。我有一个表单来编辑用户模型,我希望它根据框是否选中/取消选中,将这些属性设置为true/false。这里是我的形式Rails:form_for复选框设置为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 %> 

这里是的user_controller

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

形式update行动和更新看起来像它完美的作品,但是当我提出这个形式与SEND_EMAIL或send_text框选,它不会将用户模型(send_email,send_text)的属性更改为false

+0

所以你有什么问题吗? – proflux

+0

它不工作大声笑。对不起,我忘了发布,表单和更新完美的作品,但是当我提交这个表单与选中的send_email或send_text框,它不会将用户模型(send_email,send_text)的属性更改为false – user2158382

回答

33

当您的表单正在对某个对象执行操作时,Rails会为您执行此操作,只需将所有额外的东西从标记中除去,如下所示:

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

+1

非常感谢简单。我想我从阅读解决这个问题的其他解决方案中感到困惑 – user2158382

1

有关表单和更新数据库

实际上进一步的信息,最后的答案是正确的:使用的form_for语法是足够的和Rails会做联想选中:假/检查:真心对你。

我有同样的问题,即使是语法。事实是服务器的控制台返回了我Unpermitted parameter: checkbox_value:不要忘记更新您的必需/允许的参数放入params!而在我的情况:

# ***_controller.rb 
     private 
     def operator_params 
      params.require(:operator).permit(:name, :website, :checkbox_value, :global) 
     end 
0

我有同样的疑难问题做了

<% @batches.each do |batch| %> 
    <div class="name_list<%=cycle('odd', 'even')%>"><li> 
    <label><%= check_box_tag "send_sms[batch_ids][]", batch.id,false,:class=>'right' %> 
    <div class="att_list_names"> <%= batch.full_name %></div> </label> 
    </li> </div> 
    <% end %> 
相关问题