如何使用 OpenStruct 在 rails 中创建实例变量

How do I create an instance variable in rails using OpenStruct

我想 return 方面以及我的控制器中的数据。我的代码是:

def index
   @people = Person.for_branch(session[:branch_id]).for_interests(params[:interest_search]).search_query(params[:search_term]).for_lead_sources(params[:lead_source_search]).page params[:page]
   @organization = Organization.find(session[:organization_id])
   @facets.total_count = Person.all.count
   @facets.filtered_count = @people.count
   respond_to do |format|
      format.html 
      format.json {render partial: 'table.html', locals: { people: @people, organization: @organization, facets: @facets}}
   end
end

但是,我一直收到错误 total_count 未定义。

undefined method `total_count=' for nil:NilClass

我该如何解决这个问题?

我想你想使用 OpenStruct 变量。

require 'ostruct'
# ...

def index
  @people = Person.for_branch(session[:branch_id]).for_interests(params[:interest_search]).search_query(params[:search_term]).for_lead_sources(params[:lead_source_search]).page params[:page]
  @organization = Organization.find(session[:organization_id])

  @facets = OpenStruct.new # initializing OpenStruct instance
  @facets.total_count = Person.all.count
  @facets.filtered_count = @people.count
  respond_to do |format|
    format.html 
    format.json {render partial: 'table.html', locals: { people: @people, organization: @organization, facets: @facets}}
  end
end

请注意,使用普通的旧 Hash 更方便:

facets = {total_count: Person.all.count, filtered_count: @people.count}
respond_to do |format|
  format.html 
  format.json {render partial: 'table.html', locals: { people: @people, organization: @organization, facets: facets}}
end

并像这样在您的视图中使用它:

total count is <%= facets[:total_count] %>