2017-01-06 11 views
0

検索フォームを作成しようとしています。それはifを持っています。レコードが存在するかどうかだけをトリガーしたいと思います。しかし、レコードが存在しなくても実行されるため、正しくトリガされません。名前が存在しない場合、コードのelse部分のコードを実行する代わりに、メソッドがnilであるというエラーがスローされます。これをどうすれば解決できますか?検索フォームとredirect_to

<div class = "container"> 
<div class = "row"></div> 
    <%= form_tag(doctors_path, :method => "get", id: "search-form") do %> 
     <%= text_field_tag :search, params[:search], placeholder: "please enter your name" %> 
     <%= submit_tag "Search", :name => nil %> 
     <br> 
     <div> 
     <% if @doctors.exists?(name: params[:search])%> 
      <%= @list_patients.each do |patient| %> 
      <p>Appointment for patient <strong><%= patient.name %></strong></p> 
      <hr> 
      <br> 
      <% end %> 
     <% else %> 
      <h5>your name is not on our database, please regsitry <%= params[:search] %>.</h5> 
     <% end %> 
    </div> 
    <% end %> 
</div> 
</div> 

これは、コントローラ

def index 
    @doctors = Doctor.all 
    if params[:search] 
     @doctors_exists = Doctor.where("name like ? ", params[:search]).all 
     @list_patients = Doctor.find_by(name: params[:search]).patients.order('created_at DESC') 
    else 
     @posts = Doctor.all.order('created_at DESC') 
    end 
    end 
+0

何らかの理由で名前が ""(空)のユーザーがいますか。 params [:search]も常に存在しますか? – sahil

+0

'@ doctors'を割り当てたコントローラコードを投稿できますか? – soupdog

+0

エラーを表示する必要があります –

答えて

1

であるあなたはこれを試す場合は、同じ問題を持っていますか? <% if @doctors.where(name: params[:search]).exists? %>