2013-11-09 65 views
0

我的表稱爲用戶具有與表部門關聯has_and_belongs_to_many。 在views/users/index.html.erb中,我想用屬性字符串顯示屬於用戶的部門。示例:「圖像,方向」。我已經得到這個字符串格式在我的控制檯下一個代碼用戶:Rails的:創建一個方法在控制對象[解決]

> p1 = users.find(1) 
> pd1 = p1.departments 
> for dep in pd1 do 
    * t=t + dep.name+", " 
>end 
>t=t[0..-3] 

我的意見/用戶/ index.html.erb是這樣的:

<% @users.each do |user| %> 
    <tr> 
    <td><%= user.name %></td> 
    <td><%= user.email %></td> 
    <td><%= user.phone %></td> 
    <td><%= user.birthday.strftime("%d/%m/%Y") %></td> 
    <td><%= user.findDepartments %></td> 
    <td><%= link_to 'Show', user %></td> 
    <td><%= link_to 'Edit', edit_user_path(user) %></td> 
    <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
    </tr> 

,所以我試圖用user.findDepartments顯示字符串。我在用戶控制器中定義的方法findDepartments:

def self.findDepartments 
d=self.departments 
for dep in d do 
    t=t+dep.name+ ", " 
end 
t=t[0..-3] 
end 

而我收到的是錯誤:#

感謝 未定義的方法`findDepartments'!

編輯:抱歉,我剛剛realase如何做到這一點。只是刪除從控制器findDepartments方法,並把它與這些修改用戶模型:

def findDepartments 
    t="" 
    d=self.departments 
    puts d 
    for dep in d do 
     t=t+dep.name+ ", " 
    end 
    t=t[0..-3] 
end 
+0

你能發佈完整的錯誤信息嗎? – dax

+0

您應該在模型中定義findDepartments,而不是在您創建findDepartments作爲類方法的控制器 –

+0

中,但您嘗試將其稱爲用戶上的實例方法 – klaffenboeck

回答

0

添加一個實例方法,但是使用下面的代碼:

def deparments_names 
    self.departments.limit(3).collect(&:name).join(", ") 
end 

我不知道你爲什麼需要做[0 ..- 3],但你可以在連接('')後添加此代碼。但我會說,你還需要檢查是否有任何部門。

1

你必須定義findDepartmentsinstance method

def findDepartments 
    d=self.departments 
    for dep in d do 
    t=t+dep.name+ ", " 
    end 
    t=t[0..-3] 
end 
相關問題