2011-12-05 68 views
1

我对Rails相当陌生,并且无法获取复选框的值。我花了几个小时浏览线程和API文档,但似乎无法获得除零以外的任何价值。Rails复选框值始终为零

复选框未绑定到任何模型的属性,而是旨在成为一个布尔值,将筛选出/中忽略的元素

这里的复选框声明:

<%= form_tag model_path, :method => 'get', :id => "data_search" do %> 
    <%= hidden_field_tag :direction, params[:direction] %> 
    <%= hidden_field_tag :sort, params[:sort] %> 
    <p> 
     <%= text_field_tag :search, params[:search] %> 
     <%= submit_tag "Search", :name => nil %> 
     <%= hidden_field_tag "include_ignored", 0 %> //tried the hidden field trick also, to 
                //no avail 
     <%= check_box_tag "include_ignored", 0 %> 
     Include ignored items 
    </p> 
<% end %> 

注我已经试过声明的form_for外面的复选框的标签,以及没有效果

后来我在一个模型搜索使用此:

Model.where(:is_ignored => params[:include_ignored]) 

控制台中的查询输出与调试程序相同, params [:include_ignored]为空。

我可能会错过什么?提前致谢。

回答

2

好的,如果你是说当你点击提交 然后复选框状态不传递(总是0) 那么这是因为你最终在标签上的agrugment。

应该

<%= check_box_tag "include_ignored" %> 

不要把0之后。

+0

这是它的一部分,但它似乎并没有默认值开始。第一次加载页面时,我的目标是该复选框的值应该是false,因此表格只应显示未忽略的项目。我可以很容易地在控制器中处理这种情况,但如果我不能获得新的值用于稍后覆盖,这将不会对我有帮助... – BrMcMullin

+0

嗯,我不明白这里。是的,check_box_tag将默认为取消选中,因为这是html在呈现页面时显示的内容。如果复选框被点击或者没有被选中,那么你是否在稍后要从控制器控制的呼叫说? – huntsfromshadow

+0

我试图使用复选框的值作为布尔值,并使用它来确定当控制器收集记录并呈现它们时是否显示“忽略”记录。未选中时,“忽略”记录将被过滤掉。勾选后,“忽略”记录将被包含在视图中。 – BrMcMullin