Error: "Template is missing"

Error: "Template is missing"

我收到错误:

Template is missing


Missing template customers/search, application/search with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. 

当我尝试创建一个搜索栏来搜索数据库中的现有客户时,就会发生这种情况。我认为它正在发生,因为我使用的是部分“_search.html.erb”,但它需要是部分的,我不知道如何解决这个问题。

这是我的客户\_search.html.erb:

<%= form_tag search_customers_path do %>
    <input class = "searchbar" id ="custsearch" name=query" placeholder = "find colleague" type="text">
<% end %>

html 它正在渲染(在 events\new.html.erb 中):

 <div class = "searchbar">
      <%= render partial: 'customers/search', :object => @customers, locals:{} %>
      </div>

这是我的客户控制器 'search' 方法:

def search
    @q = "%#{params[:query]}%"

    @customers = Customer.where("first_name LIKE ? or last_name LIKE ? ",@q,@q)

    render :layout => false
  end

这是我的路线文件:

root 'pages#home'
  get '/main' => 'pages#main'
  get '/signup' => 'customers#new'
  resources :customers do
    collection do
      get 'search'
    end
  end


  get '/compose' => 'events#new'

  resources :events

我什至不确定这个搜索是否有效,但这是实现它的第一个障碍。请帮忙!

谢谢

您的搜索操作正在寻找 customers/search.html.erb,但您没有。尝试在 customers 文件夹中创建一个名为 search.html.erb 的新文件,然后将下面的代码粘贴到那里:

<div class = "searchbar">
  <%= render partial: 'customers/search', :object => @customers, locals:{} %>
</div>

同时从您的 search 操作中删除 render :layout => false。如果您以 html 格式发送请求。

你只需要将你的控制器修改成类似

的东西
  def search
    @q = "%#{params[:query]}%"

    @customers = Customer.where("first_name LIKE ? or last_name LIKE ? ",@q,@q)
    render partial: "customers/search", locals: { customers: @customers }, :layout => false
  end

在cutomers/_search中改为

#customers/_search.html.erb
<%= form_tag search_customers_path, method: :get do %>
  <input class = "searchbar" id ="custsearch" name=query" placeholder = "find colleague" type="text">

@punitcse的回答是正确的:

def create
   # this will be looking for customers/search.html.erb
   # you have to explicitly define it:

   render partial: "search", layout: false
end

应该解决错误。


在视图中调用局部是很正常的:

<%= render partial: "customers/search", object: @object %>

问题看起来是由您的 create 操作引起的,可以通过更正来解决。