跳到正文
This is Oscar
返回

Rails中隐藏的check_box

Rails中,我们经常会在form中使用check_box这个helpler方法,在controller中,可以通过params[:category]来获取category的值。然而,如果检查一下check_box这个helper方法生成的html代码,会有点不如想象那样直接可懂。

例如下面一个简单的form中

<%= form_for(@post) do |f| %>
  <div class="field">
    <%= f.label :category %>
    <%= f.check_box :category %>是否设置类型
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
<input name="post[category]" type="hidden" value="0" />
<input id="post_category" name="post[category]" type="checkbox" value="1" />是否设置类型

上面就是那个check_box生成的html代码,问题是为什么会有一个与期望的input同名的隐藏域呢?而且它已经被设定为value是0,那么它将伴随着表单提交而提交上去,这样的话,在controller里面是如何拿到正确的值的呢?

其原因是这样的:

BTW,如果是要使用checkbox group,则需要指定{:multiple => true},并且避免将uncheck的默认值设为nil。


分享到:

上一篇
Build Phonegap Application using CoffeeScipt Scss and Haml
下一篇
不要心存侥幸