如何在rails中创建搜索表单以查找与当前对象相关的对象

时间:2015-05-07 16:04:15

标签: jquery ruby-on-rails search

在我的应用中,我有工作流程和客户端。它是一个多对多的关系。每个客户端往往有30-40个工作流程。在我的客户端显示页面中,我目前有一个表格来显示该客户端的所有工作流程。

  <%- model_class = Client -%>
     <div class="page-header">
        <h1><%=t '.title', :default => @client.name %></h1>
     </div>
  ...

  <% @workflows %>

  <% @workflows.each do |workflow| %>
  ...

在我的客户控制器中,我有这个为Show准备对象。

def show
  @client = Client.find(params[:id])

  @workflows_no_subs = Workflow.where(:client_id => @client.id, :requires_preconfig => 'true')    
  @workflows_raw = Workflow.where(:client_id => @client.id)
  @workflows = @workflows_raw.sort_by {|flow| flow.name}

  respond_to do |format|
    format.html
    format.js
  end

end

我想要做的是在页面顶部添加一个搜索框,以便用户可以在客户特定工作流程中搜索工作流并显示结果。

我在网上找到的内容在视图中指出了类似的内容:

<%= form_tag clients_path(@client), :method => 'get' do %>
<h2> Search for Workflows </h2>
<p>
  <%= text_field_tag :search, params[:search] %>
  <%= submit_tag "Search", :name => nil %>
</p>
<% end %>

在控制器中有这样的东西:

@clients = Client.search(params[:search])

但我在网上找到的所有内容都在谈论索引方法,我无法弄清楚或找到任何一个很好的解释如何在我的show方法中做到这一点(这就是我假设看起来像它的地方需要去)。

我试图通过rails方式弄清楚如何最好地实现这一目标,并且如果可能我应该尝试用JQuery而不仅仅是rails来实现这一点。

如果我现在尝试搜索,我看到的当前结果是:

 Processing by ClientsController#index as 
 Parameters: {"utf8"=>"✓", "search"=>"sdsdf"}
 Client Load (53.3ms)  SELECT "clients".* FROM "clients" WHERE (name LIKE '%sdsdf%' OR re_workflow_ident LIKE '%sdsdf%' )
 PG::UndefinedColumn: ERROR:  column "re_workflow_ident" does not exist

0 个答案:

没有答案