前提・実現したいこと
Ruby on Rails 5で個人で価格比較サイトを開発し始めました。
・検索フォームの設置
・検索欄に打ち込まれたテキストデータをparamsで受け渡し(確認のためにブラウザに表示)
までは確認出来ています。
以下、自身のレベルになります。
プログラミングの学習を初めて2ヶ月程度です。
チェリー本を2周
progateのrailsを一周
railsチュートリアルを8章くらいまで
その他http通信に関する本やコンピュータの歴史や設計/要件定義の本などプログラミング以外の開発に必要な周辺知識をちょこちょこつまみました。
Railsに対する理解は低く、取り急ぎサービスのローンチを最速で目指しています。(徒に汚いコードは書きたく無いですが一定DRYや高度な記法については妥協するつもりです。)
特に個々のメソッド動きについてほとんどわかりません。
Rubyについては(初心者にしては)一定理解出来ているかと思います。
お手数ですが何卒よろしくお願いいたします。
発生している問題・エラーメッセージ
エラーは吐かないのですが、期待する検索結果を表示させる事が出来ません。 本来表示されて欲しい箇所に以下のテキストが表示されます。 #<モデルクラス名::ActiveRecord_Relation:0x007f931e963b20> オブジェクトidのActiveRecord_Relation版的なものが表示されていると理解しています。
該当のソースコード
Ruby
1ファイル名:app/controllers/results_sarch_controller.rb 2class ResultsSarchController < ApplicationController 3 def index 4 @word = params[:word] 5 @product = Product.where('sarch_word LIKE ?',"#{params[:word]}") 6 end 7end 8 9ファイル名:app/views/layouts/application.html.erb 10 11〜省略〜 12 <header> 13 <%= form_with url:'/search-results', method: :post, local: true do |form|%> 14 <input type="text" name = "word"> 15 <input type="submit" value = "検索"> 16 <% end %> 17 </header> 18〜省略〜 19 20ファイル名:app/views/results_sarch/index.html.erb 21<%= @word %><br> #確認のため表示 22<%= !!@products %> #確認のため表示 23<%= @products %> #確認のため表示 24<% @products.each do |product| %> 25 <%= product.name %><br> 26<% end %>
試したこと
paramsの受け渡しに問題は無い事は確認出来ています。(@wordが入力した文字列に対応して表示されています。)
@productsに問題無く期待したモデルを代入出来ているかはわかりませんが、!!@productsにより存在している事は確認出来ています。
また、この代入において複数の記述を試しました。
Product.where('sarch_word: LIKE ?',"#{params[:word]}")
Product.where(['sarch_word LIKE ?',"#{params[:word]}"])
Product.where('sarch_word LIKE ?',"#{@word}")
など。この部分が何かおかしいかと思っています。
views/results_sarch/index.html.erb内のeach内については恐らく間違ってないと思うのですが、、、
補足情報(FW/ツールのバージョンなど)
記載したコードは特にファイル名やpathなどについて一部質問用に改変しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/02 20:11