您好,登錄后才能下訂單哦!
繼體驗一和體驗二中的內(nèi)容,此節(jié)將體驗二中最開始的目標來實現(xiàn),體驗二中已經(jīng)將部門添加的部分添加到了公司的show頁面,剩下的部分是將部門列表也添加到公司的顯示頁面,整體思路和體驗二中相同,但是還是會有點小問題,下面看具體實現(xiàn)。
將app/views/departments/index.html.erb復制到app/views/companies/_department_list.html.erb,在company的show.html.erb頁面模版中添加如下代碼:
1 <%= render :partial => "department_list" %>
company的show.html.erb頁面模板如下:
瀏覽頁面出現(xiàn)如下問題,跟昨天的問題一樣,因為變更了控制器,@department實例變量沒有初始化,需要添加一個局部變量。
1 <%= render :partial => "department_list", :locals => { :departments => Department.find(:all)}%>
將_department_list.html.erb中循環(huán)的實例變量改為局部變量:
1 <% departments.each do |department| %>
大概就是這個樣子,但是有2個問題:
1:在添加部門的頁面中,沒有必要填寫cid,因為在公司信息界面cid信息已經(jīng)存在。
2:公司現(xiàn)實頁面的部門列表中的部門有部分不是屬于此公司的,
以為我們查找部門的時候是查找的全部。
下面解決這兩個問題:
1:將_new_department.html.erb中的CID的輸入框去掉就好。
2:這個麻煩一點,需要有幾部完成這個操作:
第一步:我們給Company賦予名為departments的額外屬性,我們需要在Company模型代碼里定義這個關(guān)系:
1 class Company < ActiveRecord::Base 2 has_many :departments 3 end
第二步:將company/show.html.erb中關(guān)于傳遞:department局部變量的方法改為如下方式:
1 <%= render :partial => "department_list", :locals => { :departments => @company.departments}%>
查案結(jié)果,發(fā)現(xiàn)錯誤:
原來ror的主外鍵關(guān)系是通過約定表列的名字來將數(shù)據(jù)連接起來的,將department中的cid改為company_id,改完之后要將對應的模板中的對應標記進行修改后查看結(jié)果正確。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。