日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Rails5 Controller Document

發(fā)布時間:2025/7/14 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Rails5 Controller Document 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
更新: 2017/06/28 大致完成全部 更新: 2017/06/29 補(bǔ)充module文件命名規(guī)則 更新: 2017/07/09 補(bǔ)充session的設(shè)置 更新: 2018/03/06 修正render(1)處的用詞 [模板] ---> [模板(templata)] 更新: 2018/03/15 完善session處的表述 完善concern處的說明,? 代碼放進(jìn)代碼塊 更新: 2018/03/18 補(bǔ)充session的選項expire_after也可以是expire_in 更新: 2018/07/09 補(bǔ)充json.array!的其他寫法 更新: 2018/09/30 補(bǔ)充render文件的命名規(guī)則及部分模板(partial template)的呼出 更新: 2019/05/17 對filter進(jìn)行修改與補(bǔ)充, 改進(jìn)用戶認(rèn)證digest例子
?請求(request)信息
?獲取請求信息??params[:參數(shù)名]
?可以獲得的信息?
?主機(jī)信息?《form method="POST"》下定義的表格傳送來的信息
?詢問信息
?query
?url后面 ?鍵名=值&...下面的信息
?路徑參數(shù)?路徑/books/1這樣的1的部分
?數(shù)組?
?路徑?key后面加[]
例: /...?sampleArray[]=...&...
?方法參數(shù)?還是單純的符號(symbol)
params[:sampleArray]
?哈希表?
?路徑?key后面加上[哈希值]
例: /...?hashArray[hashVal]=...&...
?方法參數(shù)?還是單純的符號(symbol)
params[:hashArray]
??
??
??
??
??
??
??
?指定可以獲取的數(shù)據(jù)
?黑白名單
? params.require(model).permit(attr,...)
?參數(shù)?
?model?模型名?
?attr, ...?允許獲取的屬性值的哈希值(符號symbol)
??
???
???
?遇到獲取不允許值時指定處理?默認(rèn)拒絕
?config.action_controller.action_on_unpermitted_parameters
??
??
??
?獲取頭信息?
?頭信息?附加的一系列和用戶操作無關(guān)的信息
?例?客戶端(瀏覽器)對應(yīng)的語言,瀏覽器種類,鏈接地址等
?其他?請求時的成為請求頭信息 (request header information)
??
??

?request.headers['...']
?主要的頭信息標(biāo)簽?
?內(nèi)部名 HTTP_....
?例子: HTTP_ACCEPT_LANGUAGE
?Accept?客戶端支持的內(nèi)容種類?
?Accept-Language?客戶端支持的語言(按優(yōu)先度排)
?Authorization?證書信息
?Host?請求的主機(jī)信息
?Referer?鏈接信息
?User-Agent?客戶端種類
??
??
??
??
?還可以獲取服務(wù)器環(huán)境變量
?request.headers['...']
?
?GATEWAY_INTERFACE?CGI的校對

?返回值例:?
? ?CGI/1.2
?QUERY_STRING?請求信息
?返回值例:?
? ?id=1
?PATH_INFO?路徑信息
?返回值例:?
? ?/ctrl/req_head2
?REMOTE_ADDR?客戶端的ip地址
?返回值例:?
? ?::1
?REQUEST_METHOD?HTTP方法
?返回值例:?
? ?GET
?REQUEST_URI?請求是的url
?返回值例:?
? ?/ctrl/red_head2?id=1
?SERVER_NAME?服務(wù)器名
?返回值例:?
? ?localhost
?SERVER_PORT?服務(wù)器接口號
?返回值例:?
? ?3000
?SERVER_PROTOCOL?服務(wù)器用的協(xié)議
?返回值例:?
? ?HTTP/1.1
?SERVER_SOFTWARE?使用的服務(wù)器軟件
?返回值例:?
? ??puma 3.6.0 Sleepy Sunday Serenity
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?獲取頭信息和服務(wù)器信息的專用方法?#TODO: ?F2634985-5CD9-4CBD-B8E0-C7B7A4184923
?p333~334
?因為上面的也可以用,暫時省略
?文件上傳??傳上的文件的接收
?form_tag/for ...multipart: true do
? ? ?...
? ? ?submit_tag
? ? ?...
?end
?form_tag
?form_for 選項設(shè)置
?必須 multipart: true
??
??
??
??
??
??
??
??
??
?上傳的文件方法?類型UploadedFile

?original_filename?源文件名
?content_type?內(nèi)容的類型
??
?size?大小

?1.megabyte這樣來進(jìn)行比較
?read?讀取文件內(nèi)容
?File.extname(...).downcase
?File.extname(...).upcase
?獲取文件拓展名
?注意:參數(shù)應(yīng)該是文件名
??
??
??
??
??
File.extname(你的文件.original_filename).downcase
?文件保存
?本地系統(tǒng)
?File.open("/Users/xxxx/Desktop/github/Learning-Ruby/File/#{name}", 'wb') do |file|
? ?file.write(upload.read)
?end
?文件保存
?數(shù)據(jù)庫
?# TODO: p337~339
?獲取文件后綴 ?File.extname(你的文件.original_filename).downcase
??
??
??
??
??
??
???
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?回應(yīng)(response)的操作
?response?返回處理的結(jié)果等
?概覽?
?render?呼出模板/文本/腳本等,輸出通用的結(jié)果
?redirect_to?向指定地址重定向
?send_file?輸出文件
?send_data?輸出二進(jìn)制文件
?head?只輸出回應(yīng)的頭信息?(応答ヘッダー)?
??
??
??
??
??
?render(1)

?最常用。
?如果沒有呼出,則默認(rèn)呼出這個,執(zhí)行設(shè)定好的模板(get '.../...')

呼出模板的用法

呼出同一個視圖控制器的模板(templata)??render action:?'t1'
呼出其他視圖控制器的模板(templata)?render template: 'sample/t1'
呼出應(yīng)用外部的模板(templata)?render file: '...'
?絕對路徑
?多個應(yīng)用共有一個模板時候用
?三個的符號都可以省略?

?呼出部分模板

?傳送門

??

?位置?模板內(nèi)(layout或者部分模板template)
?文件命名規(guī)則

?開頭帶_

/../_sample.html.erb

?

?呼出方法

?render url

?render partial: url

render "sample" render partial: "sample"

?注:

● 全體通用的(/app/views/ application)看做全體的部分模板,
?呼出不需要相對路徑

●?路徑是?/app/views/后面的相對路徑

●?和主模板在一個文件夾的呼出時可以省略到該文件夾部分

?

?

??
注意: render默認(rèn)放回200(:ok)狀態(tài)碼,可以通過status: 選項自己指定
?render(2)?直接輸出
?只用在debug
?會使layout無效
?輸出純文本
?無視一切符號的意義
?render plain: '...'
?輸出純文本
?有符號的意義
?render html: '...'.html_safe
?用erb輸出?render inline: '...'
?erb的代碼字符串?
?主要?這三個都會使layout無效
?
因為這是debug
?如果需要layout,要自己制定
??
??
??
??
??
??
注意: render默認(rèn)放回200(:ok)狀態(tài)碼,可以通過status: 選項自己指定
?head?只返回狀態(tài)碼
?head status [, opt]
?參數(shù)
?status?狀態(tài)
數(shù)值或者符號
?opt?應(yīng)答頭(応答ヘッダー)
?頭: 值的形式
?status?
?符號?狀態(tài)碼?含義?
?:ok?200??成功?
?:created?201??資源生成成功
?:moved_permantly?301??資源永久性移動了?
?:found?302??資源暫時移動了?
?:see_other?303??資源在其他地方?
?:unauthorized?401??要認(rèn)證?
?:forbidden?403??訪問被禁止
?:not_found?404??資源不存在?
?:method_not_allowed?405??HTTP方法不被允許
?:internl_server_error?500?サーバーエラー
???
???
???
???
??
??
??
??
??
??
??
??
?redirect_to?返回結(jié)果并且重定向
?redirect_to url [,status=302]
?url?和url_for一樣的參數(shù)
?controller?視圖控制器名
?action?動作(方法名)(controller#method)
?host?主機(jī)名(覆蓋現(xiàn)在的主機(jī))
?protocol?協(xié)議名(覆蓋現(xiàn)在的協(xié)議)
?anchor?錨名?
?only_path??是否返回相對url(是否省略協(xié)議/主機(jī)/接口)
?不指定host的話默認(rèn)true
?trailing_slash?末尾要不要/
?默認(rèn)false
?user?HTTP識別用的用戶名
?password?HTTP識別用的密碼
?只指定一個:back?鏈接向之前一個鏈接?
?(返回Referer header)
?status?數(shù)字或者符號
?符號?狀態(tài)碼?含義?
?:ok?200??成功?
?:created?201??資源生成成功
?:moved_permantly?301??資源永久性移動了
?crawler記錄
?:found?302??資源暫時移動了?
?crawler不記錄
?:see_other?303??資源在其他地方?
?:unauthorized?401??要認(rèn)證?
?:forbidden?403??訪問被禁止
?:not_found?404??資源不存在?
?:method_not_allowed?405??HTTP方法不被允許
?:internl_server_error?500?サーバーエラー
?添加flash?redirect_to @sample, notice: '...'
? ?兩個基本一樣的
?notice?用于傳出通知
?任意值
?alert?用于穿出警告和錯誤(error) ?
?任意值
redirect_to ({controller: :controller_test, action: :t8}), test_flash: 'just a test'
??
??
??
??
??
??
??
?redirect_back?重定向到前一個(Referer頭的前一個)
?redirect_back fallback_location: url
?fallback_location: url ?前一個不存在的時候重定向的目的地
?url?和url_for一樣的參數(shù)
?controller?視圖控制器名
?action?動作(方法名)(controller#method)
?host?主機(jī)名(覆蓋現(xiàn)在的主機(jī))
?protocol?協(xié)議名(覆蓋現(xiàn)在的協(xié)議)
?anchor?錨名?
?only_path??是否返回相對url(是否省略協(xié)議/主機(jī)/接口)
?不指定host的話默認(rèn)true
?trailing_slash?末尾要不要/
?默認(rèn)false
?user?HTTP識別用的用戶名
?password?HTTP識別用的密碼
?只指定一個:back?鏈接向之前一個鏈接?
?(返回Referer header)
?send_file
?send_data
?發(fā)送文件?send_file path [,opt] ?
?也就是下載鏈接
?發(fā)送二進(jìn)制文件??send_data path [,opt]?
?表示圖片用

?參數(shù)?
?path?讀取的文件路徑
?opts?選項
??
?opts?
?filename?下載的文件名
?默認(rèn): 原文件名
?type?內(nèi)容的種類
?默認(rèn): application/octet-stream
?disposition?是inline表示(:inline)
?還是直接使用戶下載(:attachment)
?status??狀態(tài)碼
?默認(rèn)200(ok)
?url_based_filename?是否根據(jù)下載的鏈接生成文件名
?默認(rèn): false
?(filename指定了的話優(yōu)先filename)
??
??
??
??
??
??
??
??
??
??
??
?(補(bǔ)充)
輸出日志 logger
?p350
?logger.unknow(msg)?未知錯誤?
?loggger.fatal(msg)?致命錯誤
?logger.error(msg)?錯誤
?logger.warn(msg)?警告?
?logger.info(msg)?信息
?logger.debug(msg)?bug信息
??
?優(yōu)先度?從上到下遞減
??
???
??
??
??
??
??
??
??
?HTML以外的回應(yīng)處理
?概要?將處理結(jié)果以XML/JSON形式輸出
?用途: 普通的回應(yīng)是給人看的,而這種回應(yīng)是用來把數(shù)據(jù)輸出給其他app
?生成xml/json?
?xml?render xml: :sample
?json?render json: :sample
注: 一次可以指定多個不同的model,不用完全一樣
?JBuild生成JSON?
?文件后綴?.json.jbuilder
?構(gòu)成?Ruby腳本
?生成json?json.array!(coll, partial: template, as: var)
?參數(shù)?
?coll?對象數(shù)組
?partial: template?描繪每個元素所用的部分模塊
?注意: 部分模塊命名開頭_
?as: var?部分模塊里獲取每個元素的變量
??
??
??

?例:?json.array! @books, partial: 'books/book', as: :book

?

其他寫法:?https://www.rubydoc.info/github/rails/jbuilder/Jbuilder:array!

?部分模板內(nèi)的方法
輸出鍵與值
一個?
?json.key value

注意: 鍵和值之間沒有空格
?參數(shù)
?key?鍵
?value?值
?
?可以嵌套
?接閉包
?json.key do
? ?json.subkey2 val1
? ?json.subkey2 val2
?end?
???
??
??
??
??
??
??
??
例: json.url book_url(book, format: :json)
book_url: 由resources自動生成
?輸出鍵與值
?多個
?json.extract! obj, prop, ...
?參數(shù)
?obj?模型對象
?prop?模型的屬性
生成的相當(dāng)于
??
??
??
?
?備注?json.pro-name Model.pro-name
?也就是說鍵名和模型的屬性名相同
?省略型?
??
??
??
??
??
??
??

例:?json.extract! sample, :pro1, :pro2, ...
??
??
??
??
??
?Build生成XML?要在Gemfile最后一句
?gem 'activemodel-serializers-xml'
?然后運(yùn)行bundle install
?文件后綴?.xml.builder
?構(gòu)成?Ruby腳本
?生成xml?xml.element([contet] [,attr: value, ...) do
? ? ...content...
?end
?參數(shù)
?element?要素名
?attr?屬性名
?value?屬性值
?content?代碼塊的內(nèi)容
??
?
??
??
??
??
??
??
??
??
??
??
??
??
??
??
???
??
??
??
??
?根據(jù)格式要求輸出?respond_to_do |format|
? ? format.type { statements }
? ? ...
?end
?參數(shù)?
?format?格式控制對象
?type?回應(yīng)的格式
?statements?描繪的代碼
??
??
?注?也可以帶條件
?if ...
? ? format.type {statements}
? ? ...
?end?
?可用的形式?html, xml, json, rss, atom, yaml, text, js, css, csv, ics
?追加形式?http/mime_types.rb
格式 Mime::Type.register "text/richtext", :rtf
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?狀態(tài)管理
?Rails可用的狀態(tài)管理方法?
?cookie?保存在瀏覽器的信息
(Rails以外也可用)
?session?保存在cookie, cash, database的做法
?(最常用)
?flash?只對現(xiàn)在和下一個HTTP要求有效的特殊session
?Cookie
?設(shè)置Cookie值?? cookies[:name] = {key: value, ...}
?參數(shù)?
?name?cookie名
?key?option
?value??選項值
??
??
??
??
??
??
??
?option?
?value:
?必須
?cookie的值
?例:
?sample@wings.msn.to
?expires:
?必須

?cookie的有效期限
?例: 3.hours.from_now
?不指定的話,關(guān)了瀏覽器就沒了

?domain:?cookie有效的域名
?path:?cookie有效的路徑
?secure:?是否安全化
?注: 如果選true, 則只在https下才會
發(fā)送cookies
?httponly:?是否只對HTTP有效
?防止JavaScript來盜取
??
??
??
??
?永久性cookie

?cookies.permanent[:key] = {...}?
注意: 有效期為20年, 優(yōu)先級最高, 設(shè)定了expire也無視

?加密cookies?cookies.encrypted[:key] = {...}
yaoyushe/app/config/secrets.yml
?既加密又永久化?cookies.permanent.encrypted[:key] = {...}
??
??
??
??
??
?刪除cookie?cookies.delete(:key)
對于設(shè)置了domain/path的,需要明確指定domain/path
?cookies.delete(:key, path: '...')
?讀取?cookies[:key]
??
??
?Session
概要??默認(rèn)情況下使用cookie來保存(CookieStore)
?和Cookie基本上一樣
?不同點: 可以自由改變保存處
?CookieStore?默認(rèn)保存方法
?優(yōu)點: 快的一筆2333
?缺點: 不安全,不保存重要的
? ? ? ? ? 單個上限4kb
?CacheStore

?保存在服務(wù)器cache(應(yīng)用的cache處)

?保存不怎么重要的短期數(shù)據(jù)

?ActiveRecordStore?保存在服務(wù)器數(shù)據(jù)庫
?適合保存核心數(shù)據(jù)
?設(shè)定session值?session[:key] = value
?session默認(rèn)有效期限是關(guān)閉瀏覽器前
?保存方法,期限等在/app/config/
?設(shè)定session本身
?位置 ?/app/config/initializer/session_store.rb
?如果沒有則在該位置自己建一個
?文件內(nèi)容?Rails.application.config.session_store :cookie_store, key: '_XX_session'
?第一個參數(shù)?數(shù)據(jù)存儲的種類
?cookie?:cookie_store
?默認(rèn)值
?緩存?:cache_store
?數(shù)據(jù)庫?:active_record_store
?Rails4以后和本體分離,需要另外安裝
?active record-session_store
?使session無效?:disabled
??
?可指定參數(shù)?
?key?存儲session使用的鍵名
?默認(rèn)_session_id(根據(jù)項目名來決定)
?domain?session鍵有效的域名
?默認(rèn)nil(現(xiàn)在的域名)
?pathsession鍵有效的pass
?默認(rèn)/
?expire_after

?session有效期限
?nil(關(guān)閉瀏覽器為止)

?要永久就設(shè)定20.years

?● 也可以寫成expire_in

?

?secure?保密通信(HTTPS)下session才有效
?默認(rèn)false
?httponly?HTTP cookie是否有效
?默認(rèn)true
??
??
??
??
??
??
??
??
??
??
?讀取?sample = session[:key]
注: 得到的是以字符串為標(biāo)簽的哈希表
?刪除?session[:key] = nil ?
?全部刪除?reset_session
?Flash
?概要?只對當(dāng)前和下一個請求有效
?主要用于確認(rèn)信息等情況,如填完提交了表格提示保存成功等等
?使用例 ???redirect_to @sample, notice: '...'
? ?兩個基本一樣的
?notice?用于傳出通知
?任意值
?alert?用于穿出警告和錯誤(error) ?
?任意值
?設(shè)定值?flash[:key] = value
?獲取值?flash[:key]
?相關(guān)方法?
?flash.now[:key]??只對當(dāng)前方法有效的flash
?flash.keep(:key)?指定的key保存到下一個方法
?flash:discard(:key)?刪除指定的key
?不指定的話全部刪除
??
??
??
??
??
??
??
???
??
??
??
??
?篩選(filter)
預(yù)處理與后處理
?前或后執(zhí)行?before_action :method [, ...]
?after_action :method [, ...]
?使用的方法用private藏起來
?可以用多個方法,直接往后加
?用render/redirect_to或者發(fā)出異常來中止before_action
?選項?
?只對一部分方法生效?only: [:t1, :t2, ...]
?except?except: [t1, t2, ...]
??
??
??
??
??
??
??
?前后執(zhí)行?around_action :method [, ...]?
?使用的方法用private藏起來
注: 用yield來表明action的執(zhí)行時刻


?around_action :test

?private
? ? def test
? ? ? ?...before...
? ? ? ?yield
? ? ? ?...after...
? ? end
?敲過部分篩選處理?母類---子類---孫類
?
?去除繼承子母類的?skip_before_action :action-name
?skip_around_action :action-name
?skip_after_action :action-name
?注?也可以用only,except
??
??
??
??
??
??
??
??
?Rails自帶認(rèn)證的問題?①.只能用自帶的認(rèn)證對話框
?②.沒辦法logout,瀏覽器關(guān)閉前一直是登陸狀態(tài)
?用戶認(rèn)證
?Rails自帶的簡單認(rèn)證
?
authenticate_or_request_with_http_basic(realm) do |name, passwd|login_procedureend 返回true/false
?參數(shù)?
?realm?realm名
?默認(rèn)"Application"
?name?用戶名?
?passwd?密碼?
?login_procedure?登陸處理
??
??
??

?

?

?用戶認(rèn)證
?Rails自帶的更安全認(rèn)證

??

authenticate_or_request_with_http_digest(realm) do |name|... end

?返回密碼,如果符合就成功,不符合就失敗

例:?

before_action :auth_ REALM = 'SAMPLE' USER = { name: 'name', password: '1234'} def auth_ authenticate_or_request_with_http_digest(REALM) do |n|USER[:password] end

?

?實現(xiàn)認(rèn)證密碼
?安裝bcrypt庫?
?在Gemfile最后添加?gem 'bcrypt', '~>3.1.7'
?執(zhí)行:?bundle install
?重啟動服務(wù)器?
??
??
?使用brcypt庫?
?建立用戶的模型rails generate model users user_name:string password:string
?在模型里添加
?has_secure_password
?不要confirmation驗證的話 has_secure_password validation:false
注:這個方法(method)自動添加了
?password/password_confirmation屬性?假想屬性,不是一定要的
?password屬性的必須的認(rèn)證,字符串長度驗證(72以內(nèi))?
?password/password_confirmation屬性的confirmation認(rèn)證不要的話
??
?認(rèn)證方法 authenticate?
?在模型里添加列(string)
?password_digest?
注意: 此列作為密碼
登錄密碼時候用
BCrypt::Password.create(@password)
? @user = Login.new(:user => @username, :password_digest => BCrypt::Password.create(@password))?
?
?
??
??
??
??
??
??
??
??
?定義共有的動作(application controller)
?位置 ?/app/controller/application_controller.rb
?作用?所以視圖控制器的母類
?用于定義
?子類需要的幫助類方法(helper method)
?大部分視圖控制器使用的篩選功能(filter)
?應(yīng)用全體的設(shè)定
?異常處理?不應(yīng)該在每一個具體的視圖控制器里,應(yīng)該在母類里
?rescue_from except, with: rescuer

?
?參數(shù)?
?except?異常
?with: rescuer?處理該異常的方法(method)
??
??
??
??
??
??
?注?實際產(chǎn)品環(huán)境(production)下產(chǎn)生異常會自動呼出異常相對應(yīng)的頁面
?位置: /public/
?如404.html
?防范
跨站請求偽造(CSRF)
?Cross-site request fogery
?protect_from_fogery with: :...
?with: :...?遇到偽造請求的處理方法
?:exception?生成異常
?ActionController: invalidAuthenticityToken
?:reset_session?刪除session
?:set_session?換成空的session
?默認(rèn)值
??
??
??
??
?按設(shè)備分配頁面 ?設(shè)備信息?request.headers['User-Agent']
?request.variant = :mobile?呼出后綴為
?html+mobile.erb
?網(wǎng)址...t1?type=mobile
?request.variant = :tablet?呼出后綴為
?html+tablet.erb
?網(wǎng)址...t1?type=tablet
?沒設(shè)定request.variant??呼出后綴為
?html.erb
?也就是默認(rèn)
?增加flash變量?add_flash_type(type, ...)
?redirect_to里面有兩個,notice, alert
?增加除此之外的用
?add_flash_type(:test1, :test2, ...)
?type?鍵(符號symbol)
?使用?redirect_to url, test: 'test'
??
??
??
?多個視圖控制器/模型共有的邏輯
?放置位置?/app/controllers/concerns/
?/app/models/concerns
?寫法
?p399
? module nameextend ActiveSupport::Concern # 只含有實例方法的話可以省略extend ActiveSupport::Concern included do#call_clazz # 呼出包含此模塊的類的類方法 endmodule ClassMethods#clazz # 類方法的定義 end#instance # 實例方法 end

?

?call_clazz

?呼出方法

?呼出包含此模塊的類的類方法

?module ClasssMethod?類方法的定義
?instance?實例方法
?extend ActiveSupport::Concern

?共通的內(nèi)容

?只含有實例方法的話可以省略

?include的成為實例方法

?extend的成為靜態(tài)方法

??
例子

? ? module Login

?

? ? extend ActiveSupport::Concern

?

? ? included do

? ? ? ? before_action :login

? ? end

?

? ? private

? ? ? ? def login

? ? ? ? ? ? #render plain: 'login module test successfully'

? ? ? ? end

end

? ??
?使用?include Module-Name
?文件命名規(guī)則?字母要一直,單詞之間_間隔,module名的單詞首字母大寫
?如 test.rb ---> module Test
? ? ?ni_hao.rb ---> module NiHao
??
??
??
??
??

?

轉(zhuǎn)載于:https://www.cnblogs.com/lancgg/p/8281786.html

總結(jié)

以上是生活随笔為你收集整理的Rails5 Controller Document的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。