2013-10-15 110 views
1

我想我試圖顯示錶,但我得到了‘球形哈爾科夫’錯誤 未定義的方法`名」:字符串 這是我的實例變量:未定義的方法`some_method'爲「some_variable」:字符串。 Ruby on Rails的

@ RESULT1 { 「否部門」=> 「1」, 「DEP2」=> 「1」, 「球哈爾科夫」=> 「2」}

@ RESULT2 { 「球哈爾科夫」=> 「1」}

@department_names [「Sphere Kharkov」,「Dep2」,「Dep without members」,「No department」]

控制器的方法

def age_profile 
    @result1 = age_report(1,9) 
    @result2 = age_report(10, 12) 
    @department_names = current_company.departments.map(&:name) 
    @department_names << "No department" 
    end 

def age_report(start_age, end_age) 
     result = {} 
     User.select("COALESCE(departments.name, 'No department') AS name, COALESCE(count(*), '0') AS count") 
     .joins("LEFT JOIN departments ON departments.id = users.department_id") 
     .where(:users => { :is_deleted => 0, :company_id => current_company.id}) 
     .where("TIMESTAMPDIFF(YEAR, `date_of_birth`, CURDATE()) BETWEEN :start_age AND :end_age", start_age: start_age, end_age: end_age) 
     .group("departments.name") 
     .each {|d| result[d.name] = d.count } 
     result 
    end 

在View:

%table.table.table-striped.table-bordered 
    %tr 
    %th= t('Depatment') 
    %th= t('1-18') 
    %th= t('18-25') 
    %th= t('25-45') 

    [email protected]_names.each do |f| 
    %tr 
     %td= f.name 
     %td= @result1[f.name] 
     %td= @result2[f.name] 

Сould你幫我請。怎麼了?

+0

就叫'F',不'f.name':'%TD = @ RESULT1 [F]'&'%TD = @ RESULT2 [F]' – MrYoshiji

+0

MrYoshiji,呵呵,謝謝您!是它! –

回答

1

@department_names變量包含不響應name方法的字符串。簡單的解決方案是:

- @department_names.each do |f| 
    %tr 
    %td= f 
    %td= @result1[f] 
    %td= @result2[f] 
1

這條線:

@department_names = current_company.departments.map(&:name) 

只檢索公司的名字。所以基本上你是在name方法的結果上調用name方法。

因此,刪除.map(&:name)或只使用f insteaf f.name

相關問題