Rubyonrails的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下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)如下效果:

  Ruby on rails的示例分析

    在每個(gè)公司中都包含有不同的部門,按照體驗(yàn)一中的方法,添加一個(gè)部門的支架,一個(gè)數(shù)據(jù)遷移。實(shí)現(xiàn)部門的增刪改查功能。部門的數(shù)據(jù)結(jié)果如下:

   Ruby on rails的示例分析

   具體方式省略。

    簡(jiǎn)單創(chuàng)建了支架而沒有定制應(yīng)用,它將難以使用,為了給一個(gè)公司添加部門,將會(huì)邊的很麻煩。我們把我們希望的頁面和支架生成的部門的頁面比較一下:

     Ruby on rails的示例分析Ruby on rails的示例分析Ruby on rails的示例分析Ruby on rails的示例分析

 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)如下圖:

Ruby on rails的示例分析

        通過拷貝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的頁面中:

  Ruby on rails的示例分析

                    現(xiàn)在局部模板應(yīng)該已經(jīng)添加到company的頁面中了,讓我們看一下show.html.erb Company頁面查看信息是否現(xiàn)實(shí)正確?,F(xiàn)實(shí)內(nèi)容如下:

Ruby on rails的示例分析               

       感覺好奇怪,我們看一下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é)果:

Ruby on rails的示例分析

什么意思,又出錯(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é)果:

   Ruby on rails的示例分析

工作正常,但是下面有兩個(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)

商城網(wǎng)站建設(shè)