更新4-6-2015:

在此处再次检查: https : //github.com/activerecord-hackery/ransack

为了确保我一切正常,除了一些打few之外,我认为我做到了。 我不清楚f.submit如何或什么使f.submit自动将用户带到该模型索引,而该模型中没有填充任何东西,并且索引动作具有先验性(因此,搜索后将我带到组的索引视图(我正在搜索的内容),并显示db中的所有内容,就好像调用Group.all时完全忽略了搜索字符串(我可以在地址栏中看到的那样)。

真的不确定我缺少什么,我确定这对我来说有点愚蠢。

编辑/更新:因此,我可以完成大部分工作,搜索屏幕将转到该控制器。 我不确定是什么自动魔术造成的,我以为我的response_to可以捕获并发送回json,所以我可以通过ajax调用来完成此操作并更新主页中的表。 然后,如果他们单击该表,则会将他们带到该特定项目的编辑表单(即,正确模型的编辑)。 我的visitor_controller.rb

 def index              
     @search = Group.ransack(name_cont: params[:q])
     @groups = @search.result
      respond_to do |format|
       format.html 
       format.js
     end 
end

也添加路由文件:

Rails.application.routes.draw do
  resources :groups
  get 'visitors', to: 'visitors#index'
  root to: 'visitors#index'
end

因此,组是我要搜索的控制器/模型(其中一个,当我首先得到一个时,将使用答案中的示例进行很多操作。)

因此,我在构建一个应用程序时,发现了Rails 4的“简单搜索”教程:

http://www.stefanosioannou.com/rails-4-simple-search-form/

但是我认为这是假设您要从视图/模型以及所有控制器中进行搜索。 即我在群组视图中,我想通过该控制器搜索所有群组。

确实,我正在做并且很难做的是有一个欢迎页面,其中包含三个搜索栏。 每个栏搜索不同的模型/视图/控制器。

欢迎页面称为访客,它具有自己的控制器,并且仅查看任何模型。

因此,我的访客控制器具有以下功能:

class VisitorsController < ApplicationController
  def index
     @groups = Group.search(params[:gsearch])
      respond_to do |format|
       format.html 
       format.js
     end 
  end
end

我只是想让一个搜索栏适用于我的组模型,因此在我的访问者index.html.erb中:

<div class="span12">
<h3>Welcome IPA of NM</h3>
<!-- search bar here -->
 <% form_tag group_path, :method => 'get' do %>
    <p>
        <%= text_field_tag :gsearch, params[:search] %>
        <%= submit_tag "Search Groups", :name => nil %>
    </p>
<% end %>
</div>

虽然失败,但它说

No route matches {:action=>"show", :controller=>"groups"} missing required keys: [:id]

所以这是我的网上论坛管理员:

class GroupsController < ApplicationController  
    before_action :set_group, only: [:show, :edit, :update, :destroy]

    def show
    end

 private
     # Use callbacks to share common setup or constraints between actions.
     def set_group
       @group = Group.find(params[:id])
     end
end

我确定以某种方式访问​​者index.html.erb中的表单代码可以与该group_path一起使用,这意味着它正在尝试显示,但刚开始时还没有ID? 我真的迷路了,不熟悉Rails4,也不知道我在这里想念的是什么。 我猜测惯例是在您的模型/视图/控制器中做所有事情,而不是像我在这里尝试的那样做交叉视图? 因此,我需要做些额外的事情来避开约定,否则我一开始就做错了整个事情?

#1楼 票数:1

我强烈建议Ransack在Rails中进行搜索查询。 您可以在此处查看它> https://github.com/activerecord-hackery/ransack ,也可以在http://railscasts.com/episodes/370-ransack上观看Ryan Bates制作的超棒轨道

Ransack全面运作,您甚至可以从同一表格搜索所有3个型号。

使用ransack,您只需使用:

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

  # Search if the models name field contains...
  <%= f.label :name_cont %>
  <%= f.search_field :name_cont %>

  <%= f.submit %>
<% end %>

然后,搜索控制器将其处理为@results:

  def index
        @q = params[:q]

        @search = Model.search(name_cont: @q)   
        @results = @search.result
    end

然后,您将在“显示/索引”页面上浏览结果。

<% @results.each do |result| %>
    <%= result.name
<% end %>

这将在一个搜索页面上显示所有结果。 如果要搜索多个模型,则可以使用多种形式为每个模型分配不同的实例变量,例如: @q1 @q2 @q3或者可以通过使用不同的实例变量进行搜索和结果从一个模型中全部搜索它们。例如

def index
    @q = params[:q]

    @firstsearch = User.search(username_cont: @q)
    @secondsearch = Post.search(title_or_description_cont: @q)

    @users = @firstsearch.result
    @posts = @secondsearch.result
end

记得添加路线=)

get 'search', to: 'search#index'

  ask by Codejoy translate from so

未解决问题?本站智能推荐:

1回复

Rails4在单独的控制器中搜索多个模型

我正在尝试在单独的控制器中对模型实现复杂搜索。 我有一个小学生模特。 整个应用程序的首页由一个没有模型的独立main_controller处理。 main_controller及其相关索引视图应该提供来自多个模型的首页和显示数据。 现在我想用几种不同类型的搜索条件搜索模型。 搜索标准
1回复

多态模型+控制器的Rails约定

我有用户,组和页面。 每个记录可以有图片。 这是我的架构: Pictures多态模型。 用户,组和页面是可picturable 。 每个用户,组和页面的嵌套pictures控制器(例如, users/5/pictures ) 这是最标准的设置吗? 我会忘记任何Rails
3回复

Rails4:控制器和模型有什么用?

我一直在阅读和观看有关学习Rails 4的视频。所有教程都有自己的代码,因此在我看来,很容易理解。 我似乎什么都学也不记得,所以我决定使用自己的代码,看看是否可以代替他们的代码来学习。 到目前为止,我了解Controller与视图相对应: 在我看来(index.html.erb)
1回复

Rails:使用控制器作为模型名称

我有一个称为“控制器”的模型。 我检查了rails保留条款列表,它没有显示“ controller”作为不使用的单词。 该模型可以正常工作,但是当我在视图中使用该模型时,该视图不会将controller属性提交回Controller。 知道“控制器”实际上是保留字吗?
1回复

通过控制器或模型搜索查询

我正在看Ryan Bates的屏幕截图(尽管是较旧的),其中他正在实现一些简单的搜索功能。 我只是想获得更好的理解,因为我希望在我的应用程序中实现稍微复杂一些的东西。 在他的控制器中,他有 然后是一个类方法(在模型中) 他的搜索方法在他的模型中,在该模型中,作为我的应用程序,我在控
1回复

Rails:如何从模型/控制器B中的视图在模型/控制器A中创建项目?

我正在Ruby on Rails上开发我的第一个应用程序,并且试图在我的一个模型的“显示”视图上添加一个链接,以克隆对象自身的某些属性以在其他模型中创建一个新对象。 例如,假设您想让用户从可用股票列表中创建自己的个人股票投资组合条目,并传递当前股票价格和股票代码。 模型A包含带有符号和价
2回复

Rails-在控制器中搜索另一个类

我有两个类-ClassB所有类Class_has_many ClassB。 我希望class_a / index.html.erb中的链接基于在ClassA索引中选择的ClassA对象创建一个新的ClassB对象-所以class_a / index.html.erb包括 我以为我必须这样
1回复

在同一控制器上的Rails4多个Ransack搜索

我在活动模型上设置了Ransack 在我的控制器中,我有三个操作,分别引用索引,即将发生的事件和myevents。 索引显示所有事件即将发生的显示事件即将发生的事件myevents显示用户自己的事件 由于它们的外观相同,因此即将发生的事件和myevents使用索引模板 注意将来的作