我正在尝试在我的网站上实现一个简单的搜索功能。目前,当我使用我的搜索栏时它会起作用,但是如果找不到结果,那么它将拉出一个空白页面。我正在使用PostgreSQL
这是我在recipes / index.html.erb中的表单
<%= form_with(url: recipes_path, method: :get, local: true) do |form| %>
<%= form.text_field(:term, {class: 'form-control', type:'search',
arialabel:'search', placeholder: 'search by recipe name'})%>
<%= form.submit 'Search', class: 'btn btn-dark bg-dark' %>
<% end %>
这是我在recipes_controller.rb中的控制器索引操作
def index
@recipes = if params[:term]
Recipe.where('name LIKE ?', "%#{params[:term]}")
else
Recipe.all
end
@categories = Category.all
end
我想将用户重定向回索引视图并显示一条消息,上面写着“未找到食谱,请搜索其他食谱。”
答案 0 :(得分:1)
在索引文件中
<%= form_tag('/recepies/', :method => :get, :role => 'form') do %>
<%= text_field_tag :term, :class => "form-control", :placeholder => "Search"%>
<button class='glyphicon glyphicon-search' type="search">
</button>
<% end %>
在你的控制器中,
def index
if params[:term].present?
@recipes = Recepie.all
@recipes = @recipes.find_term(params[:term].strip) if params[:term].present?
if @recipes.blank? {
flash[:notice] = 'the recipe was not found, please search for a different recipe.'
}
end
else
@recipes = Recepie.all
end
end
在你的模特中,
def self.find_term(term)
recipes = all
recipes = posts.where("recipes.term= ?", term)
end
答案 1 :(得分:0)
当我使用我的搜索栏时,它会起作用,但是如果找不到结果的话 然后它会拉出一个空白页面。
所以你的搜索有效,但没有结果。
我想将用户重定向回索引视图和 显示一条消息,上面写着&#34;找不到食谱, 请搜索不同的食谱。&#34;
您可以执行@recipes.any?
之类的操作来检查您是否获得了一些结果。如果您签入控制器,则可以重定向并使用flash
获取消息,或者您只需在视图中执行此操作并呈现消息。
PS:不是你问,但我真的很想用ransack来进行复杂的搜索功能。