歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Ruby on rails初體驗(三)

Ruby on rails初體驗(三)

日期:2017/3/1 9:45:19   编辑:Linux編程

繼Ruby on rails體驗一和體驗二中的內容,此節將體驗二中最開始的目標來實現,體驗二中已經將部門添加的部分添加到了公司的show頁面,剩下的部分是將部門列表也添加到公司的顯示頁面,整體思路和體驗二中相同,但是還是會有點小問題,下面看具體實現。

重要文章閱讀:Ruby入門--Linux/Windows下的安裝、代碼開發及Rails實戰 http://www.linuxidc.com/Linux/2014-04/100242.htm

Ruby on rails初體驗系列文章:

http://www.linuxidc.com/Linux/2014-04/100245.htm
http://www.linuxidc.com/Linux/2014-04/100246.htm
http://www.linuxidc.com/Linux/2014-04/100247.htm

將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頁面模板如下:

浏覽頁面出現如下問題,跟昨天的問題一樣,因為變更了控制器,@department實例變量沒有初始化,需要添加一個局部變量。

1 <%= render :partial => "department_list", :locals => { :departments => Department.find(:all)}%>

將_department_list.html.erb中循環的實例變量改為局部變量:

1 <% departments.each do |department| %>  

大概就是這個樣子,但是有2個問題:

1:在添加部門的頁面中,沒有必要填寫cid,因為在公司信息界面cid信息已經存在。

2:公司現實頁面的部門列表中的部門有部分不是屬於此公司的,

以為我們查找部門的時候是查找的全部。

下面解決這兩個問題:

1:將_new_department.html.erb中的CID的輸入框去掉就好。

2:這個麻煩一點,需要有幾部完成這個操作:

第一步:我們給Company賦予名為departments的額外屬性,我們需要在Company模型代碼裡定義這個關系:

1 class Company < ActiveRecord::Base
2   has_many :departments
3 end

第二步:將company/show.html.erb中關於傳遞:department局部變量的方法改為如下方式:

       1 <%= render :partial => "department_list", :locals => { :departments => @company.departments}%>

查案結果,發現錯誤:

原來ror的主外鍵關系是通過約定表列的名字來將數據連接起來的,將department中的cid改為company_id,改完之後要將對應的模板中的對應標記進行修改後查看結果正確。

Copyright © Linux教程網 All Rights Reserved