前提・実現したいこと
単純な検索機能を実装しているのですが、エラーになってしまいます。
解決策わからず、誤りご指摘頂けますと幸いでございます。
発生している問題・エラーメッセージ
def self.search(keyword)で発生しています。
binding.pryで、検索フォームでの入力値が「keyword」に入っていて、モデルまでいっているところは確認できました。しかし、self.searchメソッドで引数がないというようなエラーが出てしまっています。
ArgumentError in SearchesController#search
wrong number of arguments (given 0, expected 1)
Extracted source (around line #6):
has_many :documents def self.search(keyword) return Company.all unless search Company.where('name LIKE(?)', "%#{keyword}%") end
該当のソースコード
routes.rb
Ruby
1Rails.application.routes.draw do 2 devise_for :users 3 root 'searches#index' 4 resources :users, only: [:edit, :update] 5 resources :searches, only: [:index, :new, :create] do 6 collection do 7 get 'search' 8 end 9 end 10end 11
route.rb
ruby
1Rails.application.routes.draw do 2 devise_for :users 3 root 'searches#index' 4 resources :users, only: [:edit, :update] 5 resources :searches, only: [:index, :new, :create] do 6 collection do 7 get 'search' 8 end 9 end 10end
index.html.erb
Ruby
1<div class="wapper"> 2 <header> 3 <div class="name"> 4 <%= link_to "#", destroy_user_session_path, method: :delete, class: 'btn'%> 5 </div> 6 <a href="/searches/new" class="fas fa-plus"></a> 7 </header> 8 <main> 9 <%= form_tag search_searches_path, :method => 'get' do %> 10 <%= text_field_tag :keyword %> 11 <%= submit_tag 'Search' %> 12 <% end %> 13 <div class="result"> 14 <div class="result__company"> 15 <%= render partial: "search" %> 16 </div> 17 </div> 18 <div class="index"> 19 <div class="document"> 20 <div class="company"></div> 21 <div clas="item"></div> 22 </div> 23 </div> 24 </main> 25 <footer></footer> 26</div> 27
_search.html.erb
Ruby
1<% @companies.each do |company| %> 2 <%= company.name %> 3<% end %> 4
searches_controller
class SearchesController < ApplicationController def index @companies = [] end def search @companies = Company.search(params[:keyword]) end ~~~ end
company.rb
class Company < ApplicationRecord validates :name, presence: true has_many :items, through: :documents has_many :documents def self.search(keyword) return Company.all unless search Company.where('name LIKE(?)', "%#{keyword}%") end end
Ruby 2.5.1
Rail 5.0.7.2
初学者ですので、基本的なところが分かっていないのかもしれません。
ご回答をお待ちしております。
あなたの回答
tips
プレビュー