Ruby on rails Rails实现连续边栏搜索的最佳方式是什么?
我正在尝试制作一个食谱网站。我希望有一个侧边栏,用户可以一次添加一种成分,其中主体将刷新并仅显示含有该成分的食谱。我认为AJAX在这里会很棒 但我不确定Rails进行这些递归搜索的最佳方式是什么。我的想法是:Ruby on rails Rails实现连续边栏搜索的最佳方式是什么?,ruby-on-rails,ajax,search,Ruby On Rails,Ajax,Search,我正在尝试制作一个食谱网站。我希望有一个侧边栏,用户可以一次添加一种成分,其中主体将刷新并仅显示含有该成分的食谱。我认为AJAX在这里会很棒 但我不确定Rails进行这些递归搜索的最佳方式是什么。我的想法是: 使用session保存搜索词——但我在某处读到,session只用于保存短字符串数据,比如id 创建新的表资源以保存搜索词。使用每个新会话重置表 复制配方表并仅对当前配方(通过上一次搜索的配方)应用新搜索。类似于表视图的东西,如果我记得从我参加db课程时就开始了 我实现了一个简单的搜索
- 使用session保存搜索词——但我在某处读到,session只用于保存短字符串数据,比如id李>
- 创建新的表资源以保存搜索词。使用每个新会话重置表
- 复制配方表并仅对当前配方(通过上一次搜索的配方)应用新搜索。类似于表视图的东西,如果我记得从我参加db课程时就开始了
Recipe.all
开始
我不确定这里最好的方法是什么。我希望这是有道理的 Ajax
您可能正在查找名为“”或“自动完成”的内容
其工作原理是(从搜索框中)获取输入,将其发送到(如注释中所述)(通过ajax),然后在屏幕上显示结果
“持久性”是指将数据保存在DOM中,因此不需要将数据保存在后端,除非您希望在整个页面转换过程中维护结果
我们在上实现了类似的功能
搜索 您可以使用,也可以使用第三方搜索,如 搜索可按如下方式处理:
#config/routes.rb
match 'search(/:search)', :to => 'recipes#search', :as => :search, via: [:get, :post]
#app/controllers/recipes_controller.rb
def search
@recipes = Recipe.search(params[:search])
respond_to do |format|
format.js { render :partial => "elements/livesearch", :locals => {:search => @recipes, :query => params[:search]} }
format.html { render :index }
end
end
用途:
正如您所说,使用AJAX查询API点。让它返回JSON。使用像角度或击倒可以使视图重建更容易。谢谢你给我的方向!这是一个非常彻底的答案。我比你想象的还要感激。没问题-希望它能帮助你!
#app/models/recipe.rb
def self.search(search)
basic_search(name: search, description: search).take(5)
end
#app/views/elements/livesearch.html.erb
<%= search.each do |recipe| %>
#your recipes
<% end %>
#app/assets/javascripts/application.js
$(document).on("change", "#search_input", function() {
$.ajax({
url: "/search"
data: $(this).serialize();
success: function(data) {
//append to DOM
}
});
});