check_box_tag
テーブル内のアーカイブされたプロジェクトを検索しようとしたときに使用している問題が発生しています。
<%= 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 %>
したがって、ユーザーが管理者でない場合、アーカイブは常にfalseです。
ユーザーが管理者の場合、チェックボックスをオンにしない限り、アーカイブは常にfalseです。
チェックボックスをオンにして検索を送信すると、結果は表示されますが、チェックボックスは再びオフになります。チェックされていることを確認する方法はありますか?使ってみ:selection => params[:archive]
ましたが、うまくいかなかったようです。前もって感謝します。
検索機能の追加
def self.like(text); "%#{text}%"; end
def self.search(search_archive, search_client)
_projects = Project.scoped
if search_archive.present?
_projects = _projects.where(:archive => search_archive)
end
if search_client.present?
_projects = _projects.where ['client LIKE ?', like(search_client)]
end
_projects
end
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
URL:
クライアントを検索すると:アーカイブされたテスト:チェック済み:
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 %>