ruby-on-rails – 没有Ransack ::搜索对象已提供给search_form_for

ruby-on-rails – 没有Ransack ::搜索对象已提供给search_form_for,第1张

概述我意识到其他人已经问过这个错误,但这与其他情况有关. 我已经为rails 4添加了Ransack gem,并且已经安装了捆绑: gem "ransack", github: "activerecord-hackery/ransack", branch: "rails-4" 我还编辑了我的控制器如下(recipes_controller): def indexif params[:tag] @ 我意识到其他人已经问过这个错误,但这与其他情况有关.

我已经为rails 4添加了Ransack gem,并且已经安装了捆绑:

gem "ransack",github: "activerecord-Hackery/ransack",branch: "rails-4"

我还编辑了我的控制器如下(recipes_controller):

def indexif params[:tag]  @all_recipes = Recipe.tagged_with(params[:tag])else  @all_recipes = Recipe.allendif signed_in?  @user_recipes = current_user.recipes.order("created_at DESC").paginate(page: params[:page],:per_page => 10)endif params[:q]  @q = Recipe.search(params[:q])  @all_recipes = @q.result(distinct: true)endend

然后我在表单中添加如下(食谱/索引):

<%= search_form_for @q do |f| %>  <%= f.label :name_cont %>  <%= f.text_fIEld :name_cont %>  <%= f.submit %><% end %>

我收到以下错误:

No Ransack::Search object was provIDed to search_form_for!

在这条线上:

<%= search_form_for @q do |f| %>

这会与安装有关吗?

解决方法 Nicolas是正确的,因为当请求包含“q”参数时,错误来自@q仅被初始化.这就是为什么在您提交表单之前您会收到错误(没有“q”参数).

解决这个问题的另一种方法是初始化@q

在你的application_controller中

def set_search@q=Recipe.search(params[:q])end

在你的recipes_controller中before_filter:set_search

总结

以上是内存溢出为你收集整理的ruby-on-rails – 没有Ransack ::搜索对象已提供给search_form_for全部内容,希望文章能够帮你解决ruby-on-rails – 没有Ransack ::搜索对象已提供给search_form_for所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1275697.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存