小編給大家分享一下Ruby on rails的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
10年積累的成都網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有平房免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。體驗(yàn)一中添加了一個(gè)最基本的支架和一個(gè)簡(jiǎn)單的數(shù)據(jù)遷移,實(shí)現(xiàn)了一個(gè)基本的增刪改查的功能列表。體驗(yàn)二中要在次功能上繼續(xù)豐滿一下功能。實(shí)現(xiàn)如下效果:
在每個(gè)公司中都包含有不同的部門,按照體驗(yàn)一中的方法,添加一個(gè)部門的支架,一個(gè)數(shù)據(jù)遷移。實(shí)現(xiàn)部門的增刪改查功能。部門的數(shù)據(jù)結(jié)果如下:
具體方式省略。
簡(jiǎn)單創(chuàng)建了支架而沒有定制應(yīng)用,它將難以使用,為了給一個(gè)公司添加部門,將會(huì)邊的很麻煩。我們把我們希望的頁面和支架生成的部門的頁面比較一下:
Cid和Chargeuserid先不用做關(guān)聯(lián),手添即可,只是為了能夠重新組織頁面。
部門列表和創(chuàng)建部門的頁面看起來和我們想要的頁面上出現(xiàn)的內(nèi)容非常相似,目標(biāo)頁面中間部分看起來像是作為列表,而末尾像創(chuàng)建部門頁面。
接下來是今天要整理的內(nèi)容:把一個(gè)頁面的內(nèi)容分解到幾個(gè)文件里。
首先要理解三個(gè)概念:
(1) 布局:為一系列網(wǎng)頁設(shè)定統(tǒng)一的外觀,大多數(shù)會(huì)提供出現(xiàn)在每個(gè)頁面頂部和底部的標(biāo)準(zhǔn)的HTML元素。
(2) 模板:模版是頁面的主要內(nèi)容,模版與動(dòng)作相關(guān)聯(lián)。
(3) 局部模板:一個(gè)模版會(huì)調(diào)用多個(gè)不同的局部模版來建立頁面的主要內(nèi)容,局部模版允許把一個(gè)復(fù)雜模版分解為多個(gè)更小的部分,允許把公共的內(nèi)容分離出來,比如菜單和導(dǎo)航欄,局部模版可以被模版使用,它也可以被布局直接使用。
布局、模版、局部模板這三種嵌入式Ruby(ERB)文件組成一個(gè)網(wǎng)頁。
創(chuàng)建添加部門表單的局部模板:
局部模板只是另外一種ERB文件,它包含著與模板相同的標(biāo)簽類型。此時(shí)的項(xiàng)目的views結(jié)構(gòu)如下圖:
通過拷貝app/views/departments/new.html并且另存為app/views/companies/_new_department.html.erb來創(chuàng)建局部模板。一個(gè)重要的事情就是局部模板以字符_開始,Rails通過字符_來區(qū)分頁面模板和局部模板。
在模版中包含局部模版:
我們要在company的show.html.erb頁面模版來把創(chuàng)建的局部模版包含在它的輸出里,局部模板和模板一樣,僅僅只是一段偽裝成HTML樣子的Ruby代碼,通過一個(gè)render命令到company的頁面中:
現(xiàn)在局部模板應(yīng)該已經(jīng)添加到company的頁面中了,讓我們看一下show.html.erb Company頁面查看信息是否現(xiàn)實(shí)正確?,F(xiàn)實(shí)內(nèi)容如下:
感覺好奇怪,我們看一下app/views/departments/new.html、app/views/companies/_new_department.html.erb文件中的內(nèi)容:
1 <h2>New department</h2> 2 3 <%= render 'form' %> 4 5 <%= link_to 'Back', departments_path %>
看來問題出現(xiàn)在<%= render 'form' %>這個(gè)地方,這里是頁面直接跳轉(zhuǎn)到_form.html.erb頁面。所以就會(huì)出現(xiàn)如上頁面現(xiàn)實(shí)的問題。
下面將app/views/companies/_new_department.html.erb改為如下內(nèi)容(從app/views/departments/_form.html.erb將里面的內(nèi)容復(fù)制出來的信息,因?yàn)樘砑硬块T的頁面同樣是直接跳轉(zhuǎn)到此頁面)避免沖突問題:
1 <%= form_for(@department) do |f| %> 2 <% if @department.errors.any? %> 3 <div id="error_explanation"> 4 <h3><%= pluralize(@department.errors.count, "error") %> prohibited this department from being saved:</h3> 5 6 <ul> 7 <% @department.errors.full_messages.each do |msg| %> 8 <li><%= msg %></li> 9 <% end %> 10 </ul> 11 </div> 12 <% end %> 13 14 <div class="field"> 15 <%= f.label :name %><br> 16 <%= f.text_field :name %> 17 </div> 18 <div class="field"> 19 <%= f.label :cid %><br> 20 <%= f.text_field :cid %> 21 </div> 22 <div class="field"> 23 <%= f.label :chargeuserid %><br> 24 <%= f.text_field :chargeuserid %> 25 </div> 26 <div class="field"> 27 <%= f.label :desc %><br> 28 <%= f.text_area :desc %> 29 </div> 30 <div class="actions"> 31 <%= f.submit %> 32 </div> 33 <% end %>
下面再看瀏覽器請(qǐng)求的結(jié)果:
什么意思,又出錯(cuò)了,看來說是@department為空,可是在添加部門的頁面這個(gè)是正常工作的啊,為什么呢?對(duì)比一下模板中的內(nèi)容是一樣的,問題在于@department變量,額,問題就是這個(gè),原來的時(shí)候創(chuàng)建一個(gè)部門是由DepartmentsController控制的,此刻改為CompaniesController控制,在DepartmentController中調(diào)用create方法的時(shí)候調(diào)用如下代碼:
1 # POST /departments 2 # POST /departments.json 3 def create 4 @department = Department.new(department_params) 5 6 respond_to do |format| 7 if @department.save 8 format.html { redirect_to @department, notice: 'Department was successfully created.' } 9 format.json { render action: 'show', status: :created, location: @department } 10 else 11 format.html { render action: 'new' } 12 format.json { render json: @department.errors, status: :unprocessable_entity } 13 end 14 end 15 end
@department = Department.new(department_params)原來在調(diào)用create的時(shí)候它本身給定義好了一個(gè)空的department的實(shí)例變量,知道問題,那么就來解決這個(gè)問題
我們需要將頁面中的@department改為一個(gè)局部變量。
1 <h2>New department</h2> 2 3 <%= form_for(department) do |f| %> 4 <% if department.errors.any? %> 5 <div id="error_explanation"> 6 <h3><%= pluralize(department.errors.count, "error") %> prohibited this department from being saved:</h3> 7 8 <ul> 9 <% department.errors.full_messages.each do |msg| %> 10 <li><%= msg %></li> 11 <% end %> 12 </ul> 13 </div> 14 <% end %> 15 16 <div class="field"> 17 <%= f.label :name %><br> 18 <%= f.text_field :name %> 19 </div> 20 <div class="field"> 21 <%= f.label :cid %><br> 22 <%= f.text_field :cid %> 23 </div> 24 <div class="field"> 25 <%= f.label :chargeuserid %><br> 26 <%= f.text_field :chargeuserid %> 27 </div> 28 <div class="field"> 29 <%= f.label :desc %><br> 30 <%= f.text_area :desc %> 31 </div> 32 <div class="actions"> 33 <%= f.submit %> 34 </div> 35 <% end %> 36 37 38 <%= link_to 'Back', departments_path %>
如何把局部變量傳遞給局部模板:
由于局部模板就像是函數(shù),考慮到DepartmentController中給@departmentde可以所使用的值,由于表單會(huì)被用來初始化department,所以我們只要用一下方法給表單傳遞一個(gè)新的Department對(duì)象:
<%= render :partial => "new_department", :locals=>{ :department => Department.new } %>
下面在看一下頁面的結(jié)果:
工作正常,但是下面有兩個(gè)Back,額,額,由于局部模板中的Back沒有去掉,但是此時(shí)已經(jīng)不需要從創(chuàng)建department到department列表了,此處就刪掉吧。簡(jiǎn)單的很。
以上是“Ruby on rails的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道!
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
本文標(biāo)題:Rubyonrails的示例分析-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article16/dgcjgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、服務(wù)器托管、虛擬主機(jī)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容