在构建全局自动完成搜索时,如何在搜索栏中修复未定义的方法`form_with’?

尝试在我的rails应用程序中跨多个模型运行全局自动完成搜索并利用easy-autocomplete jquery库以及用于搜索的ransack gem时,我收到一个奇怪的错误。

具体来说,我相信错误发生在我的导航栏页面中,当我尝试undefined method form_with for #<#:0x007f87600e0aa8>运行查询undefined method form_with for #<#:0x007f87600e0aa8>时出现此错误undefined method form_with for #<#:0x007f87600e0aa8>

我决定破解并切换form_tag的form_with然后我在undefined method text_field for nil:NilClass"下面的行上得到一个错误undefined method text_field for nil:NilClass"我已经在下面列出了我所有的相关代码。非常感谢你的任何帮助。

Main_Controller.rb

 class MainController < ApplicationController def index end def search @movies = Movie.ransack(name_cont: params[:q]).result(distinct: true) @directors = Director.ransack(name_cont: params[:q]).result(distinct: true) respond_to do |format| format.html {} format.json { @movies = @movies.limit(5) @directors = @directors.limit(5) } end end end 

_navbar.html.erb

     

search.html.erb

 

Movies

search.js

 document.addEventListener("turbolinks:load", function() { $input = $("[data-behavior='autocomplete']") var options = { getValue: "name", url: function(phrase) { return "/search.json?q=" + phrase; }, categories: [ { listLocation: "movies", header: "Movies", }, { listLocation: "directors", header: "Directors", } ], list: { onChooseEvent: function() { var url = $input.getSelectedItemData().url $input.val("") Turbolinks.visit(url) } } } $input.easyAutocomplete(options) }); 

在你的gem文件中将rails gem改为最新的:gem’rail’,’〜> 5.1.1’或更高的consol:bundle update重新启动你的rails应用程序希望这对你有用