Rails7でRansackを利用すると「param is missing or the value is empty: q」のエラーが出た時の対応方法
created
updated
エラー内容
param is missing or the value is empty: q
Ransackのソースード
def index
@q = Book.ransack(search_params)
@books = @q.result(distinct: true)
end
private
def search_params
params.require(:q).permit(
:name_cont,
:email_cont,
:gender_eq,
)
end
indexアクションで、初期表示とPOST処理を共有しているときに発生します。
参考
Acts-as-taggable-on | Ransack documentation
Ransackのエラーを解決する方法
def index
@q = Book.ransack(search_params)
@books = @q.result(distinct: true)
end
private
def search_params
params.require(:q).permit(
:name_cont,
:email_cont,
:gender_eq,
) if params[:q].present?
end
初期表示の時は、nilを返してあげるように変更をします。
- 初期表示は全件表示
- 検索項目が入力された時は、WHEREを作成
という処理で、問題なく画面を表示することができます。