if params[:domain_name] != nil && params[:domain_name] != ''
@domains = @domains.where('name like ? ', "%#{params[:domain_name]}%")
end
实现列表的搜索功能,首先在controller增加条件语句,来判断用户是否需要检索,需要检索的话就调用搜索的动作。
注意如果存在分页的内容,需要注意写法,不然会导致搜索不生效
比如,在搜索条件语句之后使用
@domains = @domains.page(params[:page]).per(15)
是不影响搜索功能的实现
但是,如果这么写,就会导致无法搜索,页面呈现的只是一个输入框,
@domains = Domain.page(params[:page]).per(15)
这是因为在同一个页面后面的内容会导致前面的name失效,从而实现一个页面只渲染一个name的效果
<%= form_tag '', method: :get do %>
domain_name: <%= text_field_tag :domain_name, params[:domain_name] %>
domain_address: <%= text_field_tag :domain_address, params[:domain_address] %>
<%= submit_tag nil, class: "form_submit" %>
<% end %>
同样使用HTML语法也是可以的。比如
<form action="/domains" method="get">
17 domain_name: <input type="text" name="domain_name" value=<%= params[:domain_name] %>/>
18 domain_address: <input type="text" name="domain_address"/>
19 <input type='submit' />
20 </form>
form 有很多用法可以查看相关的文档Action View Form Helpers — Ruby on Rails Guideshttps://guides.rubyonrails.org/form_helpers.html
<%#= form.text_field :name %>
<input type="text" name="domain[name]" value=" <%= @domain.name %>" />
<%#= text_field_tag "domain[name]", @domain.name %>