Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:复选框标记未保存状态_Ruby On Rails_Ruby_Search_Checkbox - Fatal编程技术网

Ruby on rails RubyonRails:复选框标记未保存状态

Ruby on rails RubyonRails:复选框标记未保存状态,ruby-on-rails,ruby,search,checkbox,Ruby On Rails,Ruby,Search,Checkbox,我在试图搜索表中的存档项目时使用的复选框标记有问题 <%= hidden_field :archive, :value => false %> <% if current_user.try(:admin?) %> Archive: <%= check_box_tag :archive, true, false, :class => "archive" %></H2> <% else %> <%= hidden_

我在试图搜索表中的存档项目时使用的
复选框标记
有问题

<%= hidden_field :archive, :value => false %>
<% if current_user.try(:admin?) %>
  Archive: <%= check_box_tag :archive, true, false, :class => "archive" %></H2>
<% else %>
  <%= hidden_field :archive, :value => false %>
<% end %>
搜索操作:

def search

    @search = params[:archive], params[:client]

    @project_search = Project.search(*@search).order(sort_column + ' ' + sort_direction).paginated_for_index(per_page, page)

    @search_performed = !@search.reject! { |c| c.blank? }.empty? 

  @project = Project.new(params[:project])



respond_to do |format|
      format.html # search.html.erb
      format.json { render :json => @project }
    end

end 
网址:

当我搜索Client:Test时,选中哪个:

http://localhost:3000/search?utf8=%E2%9C%93&%5Bclient%5D=Test&%5D=&archive=true&per_page=10
未找到正确的项目,现在我取消单击“存档”:

http://localhost:3000/search?utf8=%E2%9C%93&%5Bclient%5D=Test&%5D=&archive%5B%7B%3Avalue%3D%3Efalse%7D%5D=&per_page=10
这再次显示了正确的结果,但现在该框已选中,但应取消选中,以防我要优化搜索

修复: 在我的搜索功能中:

if search_archive.present?
  _projects = _projects.where(:archive => search_archive == "true")
end
if !search_archive.present? 
  _projects = _projects.where(:archive => search_archive == "false")
end
在我的搜索视图中:

<% if current_user.try(:admin?) %>
  Archive: <%= check_box_tag :archive, true, !!params[:archive], :class => "archive" %></H2>

<% end %>

存档:“存档”%>
更改

<%= check_box_tag :archive, true, false, :class => "archive" %>
“存档”%>

“存档”%>

Ref了解更多信息

谢谢,它现在保持为真,但如果我想返回false并单击搜索,它将使用true进行搜索,并且该框保持为真。您必须添加布尔条件来代替
!!params[:archive]
表示是否需要选中复选框。这取决于你的代码,比如“params[:archive]=='true'”我现在很困惑。我已经添加了搜索功能和搜索操作。我想它可能与
如果search\u archive.present有关_projects=\u projects.where(:archive=>search\u archive==“true”)end
no这与您的型号代码有关。您是否使用
get
方法提交表单?如果是这种情况,请在选中复选框时粘贴您的URL。我已将我的URL添加到问题中。提交时我正在使用
get
方法
<%= check_box_tag :archive, true, false, :class => "archive" %>
<%= check_box_tag :archive, true, !!params[:archive], :class => "archive" %>