rails5.2です。
一覧画面(index)の上部に検索条件を追加しようと思い、以下のようにしました。
/app/views/items/index.html.erb
ruby
1 2 <%= form_with url: items_path, method: :get, local: true do |f| %> 3 <%= text_field(:search, :keyword, :class => "form-control ", :placeholder => "") %> 4 <%= f.submit "検索" , class: "btn btn-default", id: "search_button" %> 5 <% end %> 6
/app/controllers/items_controller.rb
ruby
1def index 2 3 @items = Item.paginate(page: params[:page]).search(search_params) 4 5 @search = params[:search] 6 7 respond_to do |format| 8 format.html do 9 end 10 format.js do 11 end 12 end 13 14 15 end
そうしますと2行目、text_fieldの箇所で以下のエラーになりました。
undefined method `keyword' for <ActionController::Parameters {"keyword"=>""} permitted: false>:ActionController::Parameters
2つ質問があります。
質問1
このエラーになった理由は、以下の流れで起きたという理解で合っていますでしょうか?
1.まず、railsが、items_pathから関連オブジェクトをitemだと解釈
2.ところが、itemモデルにkeywordなんてメソッドが(column)がない
3.そのため今回のエラーとなった
質問2
欲しいparamsは、search[keyword]のような形です。
railsドキュメントによると、
https://railsdoc.com/page/text_field
ruby
1text_field :page, :name 2# <input id="page_name" name="page[name]" size="30" type="text" />
とあり、これに合わせたつもりなのですが・・・。
正しくはどのように記述するのでしょうか?
先輩方よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 07:04