加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在标题部分搜索ransack搜索表单:没有Ransack

发布时间:2020-12-16 19:14:31 所属栏目:百科 来源:网络整理
导读:首先,我是RoR的新手,所以答案可能很明显,在这种情况下我道歉.我环顾四周,找不到任何有用的东西. 我正试图在我的应用程序的每个网页的标题上都有一个搜索表单,它将搜索我所有“桶”的名称.这是相关的代码: 在app / views / layouts / _header.html.erb中(在
首先,我是RoR的新手,所以答案可能很明显,在这种情况下我道歉.我环顾四周,找不到任何有用的东西.

我正试图在我的应用程序的每个网页的标题上都有一个搜索表单,它将搜索我所有“桶”的名称.这是相关的代码:

在app / views / layouts / _header.html.erb中(在导航栏中):

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

在app / controllers / buckets_controller.rb中:

def index
  unless params[:q].blank?
    @q = Bucket.search(params[:q])
    @buckets = @q.result.paginate(:page => params[:page])
  else
    @buckets = Bucket.find(:all,:limit => 5).paginate(:page => params[:page])
  end
end

我理解最后一部分并不是那么好:我想要做的就是如果我只是访问存储桶索引页面(而不是通过搜索),我会显示最近创建的5个存储桶.当我在标题表单中搜索某些内容时,我会访问索引页面,但只显示搜索到的内容. (是否有更好的方法来处理它以使搜索页与我的索引页分开?)

我发现this issue几乎完全相同,但如果每个页面都有表格,我仍然不知道如何处理@q – 当然我不必改变每个控制器的每一个动作?

提前抱歉,因为我的愚蠢,我的愚蠢!

解决方法

正如其他人所说,你需要利用ApplicationController的before_filter.虽然厄尼本人似乎不推荐这个,但实施起来很简单.

首先,使用高级Ransack选项为您的搜索设置路径

#config/routes.rb
  resources :buckets do
    collection do
      match 'search' => 'buckets#search',via: [:get,:post],as: :search
    end
  end

其次,更新您的BucketsController以包含以下自定义操作:

#controllers/buckets_controller.rb
  def search
    index
    render :index
  end

没有什么与众不同的.如果您目前尝试搜索,则会收到原始问题的错误.您正确实现了对变量q的定义,但是您必须将其移动到ApplicationController,如下所示:

#controllers/application_controller.rb
before_filter :set_global_search_variable

  def set_global_search_variable
    @q = Bucket.search(params[:q])
  end

最后,更新您的搜索表单以传递正确的搜索选项

#layouts/_header.html.erb

    <% search_form_for @q,url: search_buckets_path,html: { method: :post }  do |f| %>
      <%= f.label :name_cont %>
      <%= f.text_field :name_cont %>
      <%= f.submit %>
    <% end %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读