rails初體驗

很久沒有來更新了,因為最近自己在新浪云上面搭建了個wordpress玩,但是還沒有弄上markdown的插件,所以還是現在這里寫,那邊再復制過去。

  • <a >我的wordprss地址</a>

以下是正題


為什么會有rails

  • 其實一開始是前端入門的,后來寫著寫著,剛好學校網絡中心需要PHP開發,然后就開始入了后端的坑,然后不知道為什么寫著寫著對PHP并不是特別喜歡,一個是現在的基礎教程真的不友好,隨手一搜都是PHP4的教程,現在都出PHP7了,還有一個就是很混亂,面向對象一種方式,面向過程又一種方式,一上來就迷迷糊糊的,然后想著有沒有其他后臺語言可以學
  • 然后在udacity看jquery教程的時候,看到他們在ajax做交互的時候使用python寫的,然后我又知道原來有django的web開發框架,然后又知道railis,對于rails的快速原型開發很有好感,現在打算用rails寫一個電商網站

rails初體驗

  • 服務器部署略過,由于是學生黨沒錢換mac,所以是在linux下部署的ruby和rails的開發環境,網上教程很多,我是參考ruby china 的wiki部署的
  • 先到圖書館借了本rails學習手冊,雖然里面的代碼很久了,但是多多少少也有啟發作用,等自己做到一定的成果以后,再上網入手經典rails開發書,繼續開發

rails上線

其實rubychina上面的會更全,我之所以寫來是為了幫自己理清思路和加深印象
  • $ rails new blog
  • 這個命令會在文件夾 blog 中新建一個 Rails 程序,然后執行 bundle install命令安裝 Gemfile 中列出的 gem。
  • 執行 rails new -h
    可以查看新程序生成器的所有命令行選項。
  • $ cd blog

blog 文件夾中有很多自動生成的文件和文件夾,組成一個 Rails 程序。本文大部分時間都花在 app文件夾上。下面簡單介紹默認生成的文件和文件夾的作用:

文件/文件夾 作用
app/ 存放程序的控制器、模型、視圖、幫助方法、郵件和靜態資源文件。本文主要關注的是這個文件夾。
bin/ 存放運行程序的 rails腳本,以及其他用來部署或運行程序的腳本。
config/ 設置程序的路由,數據庫等。詳情參閱“設置 Rails 程序”一文。
config.ru 基于 Rack 服務器的程序設置,用來啟動程序。
db/ 存放當前數據庫的模式,以及數據庫遷移文件。
Gemfile, Gemfile.lock 這兩個文件用來指定程序所需的 gem 依賴件,用于 Bundler gem。關于 Bundler 的詳細介紹,請訪問 Bundler 官網
lib/ 程序的擴展模塊。
log/ 程序的日志文件。
public/ 唯一對外開放的文件夾,存放靜態文件和編譯后的資源文件。
Rakefile 保存并加載可在命令行中執行的任務。任務在 Rails 的各組件中定義。如果想添加自己的任務,不要修改這個文件,把任務保存在 lib/tasks文件夾中。
README.rdoc 程序的簡單說明。你應該修改這個文件,告訴其他人這個程序的作用,如何安裝等。
test/ 單元測試,固件等測試用文件。詳情參閱“測試 Rails 程序”一文。
tmp/ 臨時文件,例如緩存,PID,會話文件。
vendor/ 存放第三方代碼。經常用來放第三方 gem。
  • $ rails server

上述命令會啟動 WEBrick,這是 Ruby 內置的服務器。要查看程序,請打開一個瀏覽器窗口,訪問http://localhost:3000。應該會看到默認的 Rails 信息頁面

顯示“Hello, Rails!”

  • 要在 Rails 中顯示“Hello, Rails!”,需要新建一個控制器和視圖。
  • 控制器用來接受向程序發起的請求。路由決定哪個控制器會接受到這個請求。一般情況下,每個控制器都有多個路由,對應不同的動作。動作用來提供視圖中需要的數據。

  • 視圖的作用是,以人類能看懂的格式顯示數據。有一點要特別注意,數據是在控制器中獲取的,而不是在視圖中。視圖只是把數據顯示出來。默認情況下,視圖使用 eRuby(嵌入式 Ruby)語言編寫,經由 Rails 解析后,再發送給用戶。

  • 控制器可用控制器生成器創建,你要告訴生成器,我想要個名為“welcome”的控制器和一個名為“index”的動作,如下所示:

  • rails generate controller welcome index

運行上述命令后,Rails 會生成很多文件,以及一個路由。
create app/controllers/welcome_controller.rb
route get 'welcome/index'
invoke erb
create app/views/welcome
create app/views/welcome/index.html.erb
invoke test_unit
create test/controllers/welcome_controller_test.rb
invoke helper
create app/helpers/welcome_helper.rb
invoke assets
invoke coffee
create app/assets/javascripts/welcome.js.coffee
invoke scss
create app/assets/stylesheets/welcome.css.scss

  • 在這些文件中,最重要的當然是控制器app/controllers/welcome_controller.rb
  • 以及視圖,位于 app/views/welcome/index.html.erb。
  • 使用文本編輯器打開 app/views/welcome/index.html.erb
    文件,刪除全部內容,寫入下面這行代碼:
    <h1>Hello, Rails!</h1>

我們已經創建了控制器和視圖,現在要告訴 Rails 在哪個地址上顯示“Hello, Rails!”。這里,我們希望訪問根地址 http://localhost:3000 時顯示。但是現在顯示的還是歡迎頁面。
我們要告訴 Rails 真正的首頁是什么。在編輯器中打開 config/routes.rb 文件。

Rails.application.routes.draw do 
get 'welcome/index'

# The priority is based upon order of creation:
# first created -> highest priority.
# You can have the root of your site routed with "root"
# root 'welcome#index'
#
# ...

這是程序的路由文件,使用特殊的 DSL(domain-specific language,領域專屬語言)編寫,告知 Rails 請求應該發往哪個控制器和動作。文件中有很多注釋,舉例說明如何定義路由。其中有一行說明了如何指定控制器和動作設置網站的根路由。找到以 root
開頭的代碼行,去掉注釋,變成這樣:

root
'welcome#index'

root 'welcome#index'
  • 告知 Rails,訪問程序的根路徑時,交給 welcome控制器中的 index 動作處理。get 'welcome/index'告知 Rails,訪問 http://localhost:3000/welcome/index 時,交給 welcome 控制器中的 index動作處理。get 'welcome/index'是運行 rails generate controller welcome index時生成的。
  • 如果生成控制器時停止了服務器,請再次啟動(rails server),然后在瀏覽器中訪問http://localhost:3000。你會看到之前寫入 app/views/welcome/index.html.erb文件的“Hello, Rails!”,說明新定義的路由把根目錄交給 WelcomeController的 index動作處理了,而且也正確的渲染了視圖。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容