проблема заселения моего взгляда - PullRequest
1 голос
/ 15 декабря 2011

Итак, я работал с несколькими строками из БД, прежде чем пытался добавить фильтры в представление, но как только я добавил логику фильтра, я потерял все строки.Я подозреваю, что это search(params[:traits_searchable_search]), потому что a.) Я не понимаю этого и b.) Выполнение этой строки в консоли без части поиска возвращает ожидаемые строки.

Вот контроллер:

class Admin::Distributions::WorkflowsController < Admin::BaseController

  def initialize(*args)
    super
    @active_tab = :distribution
  end

  def index
    @report = Distribution.workflow.search(params[:traits_searchable_search]) #need to find the right params here
    respond_to do |f|
      f.html
      f.csv do
        send_data @report.to_csv, :type => "text/csv", :filename => "distribution_workflow_report.csv"
      end
    end
  end
end

и представление:

<%= render 'admin/distributions/head' %>
<% title 'Workflow' %>


<%= form_for @report, :url => url_for(:controller => params[:controller], :action => params[:action]), :html => {:method => :get} do |f| %>

<div class="opportunity-block yellow">

  <div class="form-block mrl mbm">
    <%= f.label :created_at_gt, "Created at >" %>
    <%= f.text_field :created_at_gt, :class => "js-db-date-picker" %>
  </div>

  <div class="form-block mrl mbm">
    <%= f.label :created_at_lte, "Created at <=" %>
    <%= f.text_field :created_at_lte, :class => "js-db-date-picker" %>
  </div>

  <div class="form-block mrl mbm mtm">
    <%= f.label :status_equal, "Status" %>
    <%= f.select :status_equal, ['delivered', 'follow up', 'manual', ''] %>
  </div>

  <div class="clear"></div>
  <%= submit_tag 'Apply Filter', :class => "input-button dark unit-right mrl" %>
  <div class="clear"></div>
</div>

<table class="standard-grid">
  <tr>
    <th class="first">ID</th>
    <th>Customer</th>
    <th>Customer Email</th>
    <th>Resume URL</th>
    <th>Partner</th>
    <th>Partner Email</th>
    <th>Status</th>
    <th>Assigned To</th>
    <th>Comments</th>
    <th></th>
  </tr>
  <tr>
    <% @report.each do |row| %>
    <td>
      <%= row.owner.id %>
    </td>
    <td>
      <%= row.owner.full_name %>
    </td>
    <td>
      <%= row.owner.email %>
    </td>
    <td>
      <%= row.resume_id%>
    </td>
    <td>
      <%= row.matching_profile.partner.title %>
    </td>
    <td>
      <%= row.matching_profile.partner.email %>
    </td>
    <td>
      <%= select_tag :status, options_for_select(Distribution.select(:status).group(:status).order(:status).map {|d| [d.status, d.status]}, row.status ) %>
    </td>
    <td>
      <%= select_tag :users, options_for_select(User.scoped_by_type('AdminUser').map {|u| [u.display_name, u.id]}) %>
    </td>
    <td>
       <%= text_field :distribution, :comments %>
    </td>
    <td>
      <%= submit_tag "save this record"%>
    </td>
  </tr>
  <% end %>
</table>

Кроме того, я добавил эти строки в модель распределения:

include Traits::Searchable

scope :workflow, :conditions => ["status in (?)", ['delivered', 'follow up', 'manual']]

search_scopes :gt    => [:created_at]
search_scopes :lte   => [:created_at]
search_scopes :equal   => [:status]

1 Ответ

0 голосов
/ 15 декабря 2011

проблема была в моем контроллере. Мне нужно было сделать второй объект для использования для заполнения строк на основе первого объекта для поиска. как это:

def index
  @search = Distribution.workflow.search(params[:traits_searchable_search]) #need to find the right params here
  #@report.current_user = current_user
  respond_to do |f|
    f.html  {
      @report = @search.paginate(:page => params[:page])
      render :action => 'index'
    }
...