railsアプリケーションで簡単な検索を実装しようとしています。検索クエリが入力を受け付けていない - ActiveRecord enum LIKE
productions_controller
def filter
if params[:filter]
@productions = Production.where('productions.status like ?', "%#{Production.statuses[params[:filter]]}%")
else
@productions = Production.all
end
end
インデックスページ上のレコードのリストがあります。私はenumデータ型であるstatus
に基づいてそれらのリストの検索/フィルタを実装しています。私は、テキストフィールドにキーワードpre
に入ったとき
<%= form_tag [:filter, :productions], :method => 'get' do %>
<p>
<%= text_field_tag :filter, params[:filter] %>
<%= submit_tag "Filter", :status => nil %>
</p>
<% end %>
index.html.erbが、これは、それが入力を取っているように見えます
Processing by ProductionsController#filter as HTML
Parameters: {"utf8"=>"✓", "filter"=>"pre", "commit"=>"Filter"}
Rendering productions/filter.html.erb within layouts/application
Production Load (0.4ms) SELECT "productions".* FROM "productions" WHERE (productions.status like '%%')
Rendered productions/filter.html.erb
ログに何が起こるかでありますキーワードを使用していますたぶん私は間違っています。誰かが私を助けてくれましたか?
要求
class Production < ApplicationRecord
enum status:{
Preproduction:1,
Postproduction: 2,
Completed:3
}
end
「Production.statuses」とは何ですか? 'Production'モデルコードを投稿できますか? –
@ GokulM数字の代わりに割り当てられた文字列名に基づいてステータスを照会するには、それを使用しなければなりませんでした。モデルを追加しました – user3576036
Production.statuses => {"Preproduction" => 1、 "Postproduction" => 2、 "Completed" => 3} – user3576036