2013-12-18 42 views
1

創建部門後,用戶可以選擇添加學校名稱。在學校的展示頁面上,我想向所有的部門展示這個名字的學校。如何顯示學校名稱= x的所有部門?

我校控制器的show動作看起來是這樣的:

def show 
    @department = Department.where(:school == 'university of connecticut') 
end 

這顯然是行不通的。這是什麼正確的語法?

+0

請注意,':school =='connecticut''大學擴展爲'false'。 – sawa

回答

2

無論我們是否要得到預期的結果:

@department = Department.where(school: 'university of connecticut').first 

@department = Department.where('school = ?', 'university of connecticut').first 

where它可以是一個散列或SQL語句。需要注意的是在第一個例子中,我們使用符號symbol: value,這相當於:symbol => value

此外,當正在使用的快捷鍵散列法,牢記where返回ActiveRecord::Relation對象,而不是一個ActiveRecord對象。如果您希望直接接收ActiveRecord對象,則需要添加.first或另一種形式的.find

+0

感謝你的詳細回覆。但是現在,當我嘗試在學校表演視圖中調用'<%= @departments%>'時,我得到了'#'。任何想法爲什麼發生這種情況? –

+0

請參閱我的答案更新(您必須添加'.first'或另一種返回ActiveRecord對象的方法) – Donovan

+0

'<%= @ departments.first%>' –

2

你接近:

Department.where(school: 'university of connecticut').first 

即正常哈希語法。

+0

太棒了!這工作。我會在7分鐘內接受你的回答。但是現在,當我嘗試在學校表演視圖中調用'<%= @departments%>'時,我得到了'#'。任何想法爲什麼發生這種情況? –

+0

@DylanRichards你是個騙子。 – sawa

+0

原因我決定不接受這個答案是因爲另一個用戶提供了一個有效的答案,並繼續幫助我解決相關問題@sawa –

相關問題