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" %>