railsチュートリアルを1周した程度の知識ですが、現在railsで作るWebアプリにransackを使って検索機能を実装しようと考えています。
https://qiita.com/nishina555/items/2c1f8bae980e426519bc
↑のURLの流れに沿って見本の検索機能を作っているのですが、途中の「起動確認」の段階でNameErrorが出てしまいます。
3行目のfが定義されていないとのことですが、1行目の|f|で定義されていることにはならないのでしょうか。
index.html.slim
h1 | 学生検索 = render 'search_form' table - @students.each do |student| tr td = student.name td = student.sex td = student.age td = student.department.name td = student.subjects.map{|subject_id| Subject.find(subject_id).name}.join(', ')
_search_form.html.slim
= search_form_for(@q, url:search_path) do |f| /検索フォームをここに書く = f.submit
students_controller
class StudentsController < ApplicationController def index @q = Student.ransack(params[:q]) @students = @q.result(distinct: true) end def search @q = Student.search(search_params) @students = @q.result(distinct: true) end private def search_params params.require(:q).permit! end end
routes.rb
Rails.application.routes.draw do root to: 'students#index' get 'search', to: 'students#search' end
まだ初学者の域を出ないため、とんちんかんなことを言ってるかもしれませんが、どなたか原因が分かる方に教えていただけるとありがたいです。
あなたの回答
tips
プレビュー