前提・実現したいこと
現在、railsにて顧客管理のアプリを作成しているのですが、
初めは全ての一覧を出力したいのですが、どうすればいいかわかりません。
またid 1のみ除外して、検索したいです。
何卒、よろしくお願いいたします
発生している問題・エラーメッセージ
初めは何も一覧画面に出ません。 また検索すると、id 1も検索に引っかかります。
該当のソースコード
searcheacontoroller
ruby
1 def index 2 @searches = Search.where.not(id: 1) 3 if params[:family_name].present? 4 @searches = Search.where('family_name LIKE ?', "%#{params[:family_name]}%") 5 else 6 @searches = Search.none 7 end 8 end
search.rb
ruby
1class Search< ApplicationRecord 2 extend ActiveHash::Associations::ActiveRecordExtensions 3 belongs_to_active_hash :sex 4 belongs_to :user, optional: true 5 has_one :home 6end 7
routes
ruby
1Rails.application.routes.draw do 2 get 'searches',to: "searches#index" 3 mount RailsAdmin::Engine => '/admin', as: 'rails_admin' 4 devise_for :users, controllers: { 5 omniauth_callbacks: 'users/omniauth_callbacks', 6 registrations: 'users/registrations' 7 } 8 post '/callback' => 'linebot#callback' 9 get 'homes/index' 10 resources :homes, only: [:index] 11 root to: 'home#index' 12 resources :users 13 resources :attendances 14 resources :daytimes 15 resources :restaurants, only: [:index, :show] 16 resources :searches do 17 collection do 18 get 'search' 19 end 20 end 21 namespace :admin do 22 resources :restaurants, only: [:index, :new, :create, :show, :edit, :destroy] 23 end 24end 25
index.html.erb
<%= form_with url: searches_path, method: :get, local: true do |f| %> <%= f.text_field :family_name, class: "sea1" %> <%= f.submit class: "button is-warning" %> <% end %> <table> <thead class = "category"> <tr> <th><i class="fas fa-user"></i> 名前</th> <th>フリカナ</th> <th><i class="fas fa-venus-mars"></i> 性別</th> <th>年齢</th> <th><i class="fas fa-building"></i> 会社名</th> <th>役職</th> <th><b>〒</b>郵便番号</th> <th><i class="fas fa-map-marker-alt"></i> 住所</th> <th><i class="fas fa-phone"></i> 電話番号</th> <th colspan="9"></th> </tr> </thead> <tbody> <% @searches.each do|search| %> <tr> <th class = addless><%= search.family_name %> <%= search.first_name %>  </th> <th class = addless><%= search.family_name_kana %> <%= search.first_name_kana %>  </th> <th class = addless><%= search.sex.name %>  </th> <% if search.age == nil %> <th class = addless><%= "" %> <% else %> <th class = addless><%= "#{Time.now.year - search.age.year}歳" %>  </th> <% end %> <th class = addless><%= search.company %>  </th> <th class = addless><%= search.position %></th> <% search.postal_code.to_s.insert(3, "-")%> <th class = addless><%= search.postal_code %>  </th> <th class = addless><%= search.address1 %> <%= search.address2 %> <%= search.address3 %> <%= search.building_name %>  </th> <th class = addless><%= search.phone_number %></th> <th> <%= link_to '詳細', search,class: "button is-info" %> </th> <th><%= link_to '編集', edit_search_path(search.id),class: "button is-success" %> </th> <th><%= link_to '削除',search_path(search.id), method: :delete,class: "button is-danger", data: { confirm: '本当に削除してよろしでしょうか?' } %></th> </tr> <% end %> </tbody> </table>
試したこと
controllerのif文に
def index if @searches = Search.where.not(id: 1) elsif params[:family_name].present? @searches = Search.where('family_name LIKE ?', "%#{params[:family_name]}%") else @searches = Search.none end end
とすると一覧は出るのですが、検索ができなくなってしまいます。
補足情報(FW/ツールのバージョンなど)
ruby '2.6.5'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/02 09:06
2020/11/02 09:12
2020/11/02 09:31
2020/11/02 09:51
2020/11/02 10:50