偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

jQuery Mobile開發(fā)移動Web應(yīng)用代碼分析:Rails設(shè)置篇

原創(chuàng)
移動開發(fā)
本文是使用jQuery Mobile和Rails開發(fā)一款問卷或調(diào)查應(yīng)用程序的教程系列的第一個部分。該系列將介紹如何開發(fā)一款與移動設(shè)備兼容的Web應(yīng)用程序,好讓用戶以一種類似向?qū)У姆绞交卮鹨幌盗袉栴}。

[[34725]]

【51CTO譯文】jQuery Mobile含有幾項直接可以使用的實用特性,用于讓我們開發(fā)的Web應(yīng)用程序可以在眾多移動設(shè)備上運行。在大多數(shù)情況下,jQuery Mobile隨帶的基本模板和CSS主題足以滿足需要。然而,由于所有模板是用CSS來創(chuàng)建的,所以我們很容易定制我們網(wǎng)站的外觀感覺。

[[34726]]

51CTO提供這個應(yīng)用CSS原文件的下載地址,大家把應(yīng)用下載下來對照應(yīng)用進行分析

開發(fā)移動Web應(yīng)用程序時,jQuery Mobile是一種理想的框架,這有諸多理由,包括如下:

1、由于該框架建立在jQuery上,因而對于在網(wǎng)上用過jQuery的人來說比較容易上手。

2、它目前與許多主要的平臺兼容,包括iOS、Android、BlackBerry、Palm WebOS、諾基亞/Symbian和Windows Mobile等。

3、包含的庫壓縮后大小約為12k;就其提供的功能而言非常輕便。

至于后端,我們會使用隨帶幾個gem的Rails 3,包括Typus。

先不妨創(chuàng)建一個新的rails應(yīng)用程序:

  1. rails new . 

確保你已經(jīng)安裝了***版本的rails gem。如果你在開發(fā)的應(yīng)用程序要求使用Rails 2,建議你了解和安裝RVM(Ruby版本管理器)。這樣可以避免可能由gem版本問題引起的許多頭痛問題。

接下來,我們把gem添加到我們的Gemfile文件:

  1. source 'http://rubygems.org' 
  2.  
  3. gem 'rails', '3.0.7' 
  4.  
  5. gem 'sqlite3-ruby', :require => 'sqlite3' 
  6.  
  7. gem 'jquery-rails' 
  8.  
  9. # Admin 
  10.  
  11. gem 'typus', :git => 'http://github.com/fesplugas/typus.git' 
  12.  
  13. gem 'acts_as_list' 

正如你所見,我們將使用Rails 3.0.7,因為它是截至截稿時***的穩(wěn)定版Rails。我們還將安裝jquery-rails這個gem,覆蓋Rails隨帶的默認的Prototype JavaScript庫。由于jQueryMobile顯然需要jQuery基本庫,因而我們其實沒有理由將包含的Prototype庫留下來。

至于admin部分,我們會安裝Typus gem和acts_as_list。只要稍加配置,Typus就會提供整個后端,用于管理我們?yōu)檫@次調(diào)查創(chuàng)建的問題。Acts as list可與Typus無縫地協(xié)同運行,讓我們很容易控制問題的順序。

現(xiàn)在我們可以運行捆綁工具(bundler),安裝我們的gem。

  1. bundle install 

jQuery gem和Typus gem都有生成器,其作用是實際上讓gem自行安裝。在app目錄下時,可通過運行下列命令來做到這一點:

  1. rails generate jquery:install 
  2.  
  3. rails generate typus 

默認情況下,Typus不隨帶任何一種認證門(authentication gate)。由于這幾乎如同長驅(qū)直入數(shù)據(jù)庫,我們的***步是應(yīng)該確保其安全。確保安全的最簡單方法就是,添加基本HTTP認證。這顯然不是特別安全,但是就我們這個教程而言,已足夠安全。為了實現(xiàn)這一步,我們需要往config/initializers/typus.rb文件添加下列幾行:

  1. config.admin_title = "survey" 
  2.  
  3. config.authentication = :http_basic 
  4.  
  5. config.username = "admin" 
  6.  
  7. config.password = "pass" 

當(dāng)用戶訪問/admin URL時,這會提示用戶輸入用戶名和密碼。

鑒于我們的應(yīng)用程序已完全設(shè)置好,就可以開始生成資源和數(shù)據(jù)庫模式。我們可以使用Rails的簡略方法,即直接從命令行,使用下列命令來做到這一點:

  1. rails generate resource question question:string position:integer 
  2.  
  3. rails generate resource choice choice:string question_id:integer 
  4.  
  5. rails generate resource answer question_id:integer choice_id:integer 
  6.  
  7. rake db:migrate 

現(xiàn)在數(shù)據(jù)庫中有3個表。一個表存放我們向用戶提出的問題。每個問題會有多個選項,每個答案將是一條記錄,存儲了問題和選項的ID組合。由于選項只屬于一個問題,答案表中的question_id字段其實沒有必要。我們把它放在這里作為簡易的訪問器,用于簡化查詢,比如獲取某個問題的答案數(shù)量。問題表中的position字段讓我們可以指定問題在調(diào)查中出現(xiàn)的順序。

為了給我們的模型添加這些關(guān)系,我們將按下列方法來進行改動:

  1. /app/models/question.rb 
  2.  
  3. class Question < ActiveRecord::Base 
  4.  
  5. acts_as_list 
  6.  
  7. has_many :choices 
  8.  
  9. end 

你從上面可以看到,我們給該模型添加了acts_as_list插件,那樣我們就能改變每一個問題在調(diào)查中出現(xiàn)的順序。

  1. /app/models/choice.rb 
  2.  
  3. class Choice < ActiveRecord::Base 
  4.  
  5. belongs_to :question 
  6.  
  7. end 
  8.  
  9. /app/models/answer.rb 
  10.  
  11. class Answer < ActiveRecord::Base 
  12.  
  13. belongs_to :question 
  14.  
  15. belongs_to :choice 
  16.  
  17. end 

好了!鑒于資源和數(shù)據(jù)庫表已生成,我們需要為Typus創(chuàng)建存放在admin文件夾下的一些控制器。為此,我們運行下列命令:

  1. rails generate controller admin/answers 
  2.  
  3. rails generate controller admin/choices 
  4.  
  5. rails generate controller admin/questions 

接下來,我們需要更改每一個控制器文件里面的頭幾行,讓控制器從ResourcesController繼承過來,而不是從基本ApplicationController繼承過來。在Typus中,一旦我們從ResourcesController繼承過來,就直接獲得了一些強大的CRUD(創(chuàng)建、讀取、更新和刪除)功能,沒必要進一步編寫任何代碼。下面是必要的替換操作:

  1. /app/controllers/admin/answers_controller.rb 
  2.  
  3. replace: 
  4.  
  5. class Admin::AnswersController < ApplicationController 
  6.  
  7. with: 
  8.  
  9. class Admin::AnswersController < Admin::ResourcesController 
  10.  
  11. /app/controllers/admin/choices_controller.rb 
  12.  
  13. replace: 
  14.  
  15. class Admin::ChoicesController < ApplicationController 
  16.  
  17. with: 
  18.  
  19. class Admin::ChoicesController < Admin::ResourcesController 
  20.  
  21. /app/controllers/admin/questions_controller.rb 
  22.  
  23. replace: 
  24.  
  25. class Admin::QuestionsController < ApplicationController 
  26.  
  27. with: 
  28.  
  29. class Admin::QuestionsController < Admin::ResourcesController 

差不多完成了!現(xiàn)在我們要為Typus配置文件添加一些配置語句。要是config/typus目錄下有其他任何yaml文件,我們可以刪除,因為它們沒有必要。我們運行生成器語句時,Typus可能會生成示例配置文件。我們不妨創(chuàng)建一個名為typus.yml的文件,位于config/typus目錄下。

首先,我們添加Choice模型的配置語句:

  1. Choice: 
  2.  
  3. fields: 
  4.  
  5. default: choice, question_id, question 
  6.  
  7. form: choice, question_id, question 
  8.  
  9. order_by: 
  10.  
  11. relationships: question 
  12.  
  13. filters: created_at, question 
  14.  
  15. search: 
  16.  
  17. application: survey 
  18.  
  19. Question: 
  20.  
  21. fields: 
  22.  
  23. default: question, position 
  24.  
  25. form: question 
  26.  
  27. order_by: position 
  28.  
  29. relationships: choices 
  30.  
  31. filters: created_at 
  32.  
  33. search: question 
  34.  
  35. application: survey 

不妨逐一解釋:

  1. Choice: 
  2.  
  3. fields: 
  4.  
  5. default: choice, question_id, question 
  6.  
  7. form: choice, question_id, question 

通過短短幾行配置,Typus就能為我們創(chuàng)建許多后端功能。首先,我們將指定允許編輯的字段。Field(字段)定義的default(默認)部分將允許我們設(shè)定哪些字段會在列表中顯示。在本例中,我們允許管理員可以在create和update表單中設(shè)定同樣這組字段。這在字段定義的form(表單)部分進行了指定。

  1. order_by: 

默認情況下,我們的選項將按照創(chuàng)建選項的順序來排序,所以根本不需要為order_by指定什么。

  1. relationships: question 

每個選項屬于一個問題,所以我們可以定義問題與選項模型的關(guān)系。Typus會自動設(shè)計我們的表單,以說明數(shù)據(jù)記錄彼此之間有著怎樣的關(guān)系。

  1. filters: created_at, question 

只要在filter(過濾器)定義中列出字段及/或關(guān)系,就可以在typus中定義過濾器。根據(jù)字段類型,typus會在后端創(chuàng)建過濾器功能。以created_at為例,這將是指定日期的一組下拉框。至于question,這將是列出存儲在數(shù)據(jù)庫中所有問題的下拉框。

  1. search: 
  2.  
  3. application: survey 

就這個模型而言,search(搜索)定義對我們沒什么用處,因為我們不可能搜索任何選項。不過我們要是在這里指定了字段, typus會提供一個搜索框,那樣我們就能按照搜索詞語,過濾存儲在數(shù)據(jù)庫中的記錄。這里的application(應(yīng)用程序)定義是應(yīng)用程序的名稱,我們稱之為“survey”。

***一個清理步驟是,我們刪除文件public/index.html,它會阻止我們的默認路由。

現(xiàn)在我們可以開啟服務(wù)器了:

  1. rails s 

用瀏覽器訪問下列URL,即可測試我們新創(chuàng)建的admin:

  1. http://localhost:3000/admin 

 

責(zé)任編輯:佚名 來源: 51CTO
相關(guān)推薦

2011-12-12 10:08:39

jQuery MobiHTML5

2011-07-08 15:27:03

jQuery Mobi

2011-09-05 10:49:14

Sencha ToucjQuery MobiHTML5

2011-09-05 13:45:25

jQuery MobiSencha Touc移動Web UI框架

2011-09-01 10:09:04

2011-03-01 09:23:47

移動Web應(yīng)用開發(fā)成本

2013-11-28 09:38:04

移動開發(fā)jQuery Mobi

2012-03-27 14:34:07

Visual Stud微軟MVC

2010-08-13 08:59:58

Rails

2012-02-09 16:45:41

2011-07-21 15:37:40

jQuery MobiJQMJSON

2012-03-06 16:57:40

jQuery mobijQuery mobiframework

2014-06-19 10:26:15

Mobile AppWeb App

2010-08-16 08:49:25

jQuery MobijQuery

2014-09-18 10:43:32

jquery mobi

2012-04-09 15:15:48

國雙科技Mobile Diss

2011-09-02 16:42:51

Sencha ToucWeb應(yīng)用

2012-01-18 14:29:42

移動Web應(yīng)用開發(fā)

2011-02-21 09:10:42

WebHTML 5JavaScript

2016-04-25 10:07:18

jQuery代碼Web開發(fā)效率
點贊
收藏

51CTO技術(shù)棧公眾號