gpt4 book ai didi

ruby-on-rails - ruby rails : Search Form - multiple search fields

转载 作者:数据小太阳 更新时间:2023-10-29 07:26:06 24 4
gpt4 key购买 nike

我正在尝试创建一个允许用户搜索数据库的应用程序。搜索页面布局将与一些下拉菜单一起使用,这些菜单将显示数据库中已有的数据以缩小搜索范围,以及允许用户输入关键字(如“项目名称”)的文本框。我在让 Rails 获取已在搜索表单中输入的所有信息并执行一次大搜索时遇到了问题。

这是我的搜索布局的一部分:

<%= form_tag search_path, :method => 'get' do %>

<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort] %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search Project Name", :project_name => nil %>
</p>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search Client", :client => nil %>
</p>
<% end %>

这是我在项目 Controller 中的索引和搜索操作:

def index
@projects = Project.all

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

def search

@project_search = Project.search(params[:search]).order(sort_column + ' ' + sort_direction).paginate(:per_page => 5, :page => params[:page])


end

这是我的 models/project.rb 文件的一部分

def self.search(search)
if search
where('project_name LIKE ?', "%#{search}%") || where('client LIKE ?', "%#{search}%")
else
scoped
end
end

如您所见,我只是尝试搜索 project_name 或客户端。如果我能做到这一点,我会将其扩展到其他领域。

目前的功能是,当我尝试在两个框中搜索它时,它会覆盖一个,并且只进行其中一个字段搜索。

我是 ROR 的新手,希望有人能提供帮助。任何建议将不胜感激。

提前致谢!

最佳答案

This problem has been solved in another question: Ruby on Rails: Advanced search

根据您的问题,@Chris Wise 假设您的 projects 中有两列表:project_nameclient .

我可能是错的,但我认为你实际上有两个模型 ClientProject ,客户有很多项目。如果是这样,您需要在每个模型中定义搜索:

客户端模型:

def self.search search_term
return scoped unless search_term.present?
where(['client_name LIKE ?', "%#{search_term}%"]) #client_name means the column name, change it to the correct name.
end

项目模型:

def self.search search_term
return scoped unless search_term.present?
where(['project_name LIKE ?', "%#{search_term}%"]) #project_name means the column name, change it to the correct name.
end

你的表单:

<%= form_tag projects_path, method: :get do %>
<%= text_field_tag :project_name, params[:project_name] %>
<%= text_field_tag :client, params[:client] %>
<%= submit_tag "Search", name: nil %>
<% end %>

然后你的 Controller :

#return all projects that match the search criteria
@project_search = Project.search(params[:project_name]).all
#return all clients that match the search criteria
@clients_search = Client.search(params[:client]).all

希望对你有帮助

关于ruby-on-rails - ruby rails : Search Form - multiple search fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11577937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com