【问题标题】:searching in rails 4在 Rails 4 中搜索
【发布时间】:2014-07-07 17:33:01
【问题描述】:

我在这里检查了其他答案。没有找到确切的解决方案。 下面的控制器/模型/视图。

如果有人搜索不存在的项目,我需要显示“没有搜索结果与您的搜索匹配”的通知

我尝试使用 params[:search].nil 向控制器添加和 elsif?和闪光

我还尝试将 if/else 添加到模型中,而 else 返回“无搜索结果”

控制器

def index
  if params[:search]
   @projects = Project.search(params[:search].downcase).order("due_on ASC")
  else
   @projects = Project.all.order('due_on ASC')
  end
end

模型

def self.search(search)
  where("LOWER(project_name) LIKE ?", "%#{search}%")
end

视图

<p>
  <%= form_tag(projects_path, method: "get") do %>
  <%= text_field_tag :search, params[:search], placeholder: "Search" %>
  <%= submit_tag "Search", :name => nil %>
  <% end %>
</p>

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

    将其添加到您的视图中怎么样?

    <% if @projects.any? %>
      <%= render @projects %>
    <% else %>
      <p>No search results match your search, <%= params[:search] %>.</p>
    <% end %>
    

    【讨论】:

      【解决方案2】:

      在你看来:

      <% if @projects.present? %>
        <%= do something here %>
      <% else %>
        <p>No search results match your search</p>
      <% end %>
      

      【讨论】:

        【解决方案3】:

        像这样在controller code 中设置Flash notice 会起作用。

        def index
          if params[:search]
           @projects = Project.search(params[:search].downcase).order("due_on ASC")
          else
           @projects = Project.all.order('due_on ASC')
          end
          if @projects.blank?
          flash.now[:notice] = "No Records Found for this search Result"
        end
        

        【讨论】:

          猜你喜欢
          • 2015-02-23
          • 2015-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-13
          • 2014-06-08
          • 1970-01-01
          相关资源
          最近更新 更多