質問: @q.result end ビューは <%= search_form_for @q,:url => {:controller => :comics ,:action => :search} do |f| %> <%= f.label "コミックタイトル(完全一致)" %> <%= f.text_field :title_eq, placeholder: "完全一致", required: true %> <%= f.label "コミックタイトル(部分一致)" %> <%= f.text_field :title_cont, placeholder: "部分一致", required: true %> <%= f.submit'検索' %> <% end %> 作品表紙 作品タイトル 作者 <% @comics.each do |comic| %> <%= image_tag comic.front_cover.to_s %> <%= comic.title %> <%= comic.author %> <% end %> <% end %> となっています。ですが、この書き方だと、検索機能自体は動くのですが、検索ボタンを押す前の時点で、すべてのレコードが検索結果(すなわち以下)に出てきてしまいます。検索をかけるとすでに表示されているレコードの中から検索ワードに引っかかるものを絞るという形になっています。 検索ワードを入れて、検索ボタンを押して初めて、レコードが出てくるようにしたいです。 私が考えた方法は、「text_fieldが空の時、検索を押しても、レコードが表示されない」というものですが、その書き方がわかりません。 お伺いしたいことは二つです。 1「text_fieldが空の時、検索を押しても、レコードが表示されない」という方法はそもそも正しいアプローチでしょうか 2もし正しいなら、書き方を教えていただきたいです。間違いなら、正しい考え方を教えていただきたいです。 何卒よろしくお願いいたします。
回答: RoRは専門外なのでそっち関連の技術的なことは回答できませんが、 ビュー側にのonsubmitを拾って未入力だったらsubmitしないというJavaScriptを入れればいいのでは? ``` form.onsubmit = function() { if(完全一致.value.replace(/ /g,'').trim() || 部分一致.value.replace(/ /g,'').trim()) return true; return false; } ```