rails 2.0無法使用靜態的scaffold功能

7 views
Skip to first unread message

alant167

unread,
Feb 23, 2008, 8:37:35 PM2/23/08
to Ruby on Rails Taiwan
在rails 2.0中如果要使用動態scaffold的功能,可以在controller的文件中加入scaffold :模組名稱。
(但是要安裝scaffolding及pagination的外掛套件才能正常呈現畫面)
現在如果要使用靜態的scaffold功能,舊的使用指令己經無法使用了,如底下的指令:
ruby script/generate scaffold 模組名稱 控制器名稱
例如:ruby script/generate scaffold deliver admin(會產生底下的錯誤)
exits app/modesa/
exits app/controllers/
exits app/helpers/
exits app/views/delivers
exits app/views/layouts/
exits test/functional/
exits test/unit/
wrong number of arguments <1 for 2>

在goodle查詢之後才瞭解新版rails 2.0的使用方式為:
ruby script/generate scaffold 模組名稱 title:string
description:text.........
例如這個指令ruby script/generate scaffold deliver title:string
description:text
雖然它可以正常運行,但是所生成的靜態文件並不是我們所需要的,它會自動在views目錄底下產出一個delivers的目錄,而不是在原有的
admin的目錄裡自動生成文件。

我的問題重點是動態的scaffold功能無法讓我對於所呈現在畫面做中文化的動作,所以只能使用靜態的scaffold功能將相關的文件產出,再將這
些文件做中文化的修改,所呈現的畫面就會是中文的介面了,現在我所面臨到的問題是rails 2.0的版本不再支援以前的靜態的scaffold語法,
導致無法生成相關的文件來讓我對它中文化,這個問題已經困擾我許多天了,是不是有高手能夠提供您是如何在rails 2.0版中將您的文件畫面中文化的
方法呢?感謝!

chris

unread,
Feb 24, 2008, 3:14:04 AM2/24/08
to Ruby on Rails Taiwan
如果無法使用2.0預設的REST風格,分別以model, controller generator生成你要的東西如何?

alant167

unread,
Feb 24, 2008, 5:23:05 AM2/24/08
to Ruby on Rails Taiwan
感謝chris的回覆:
自己雖然可以分別以model, controller generator生成自己要的東西來中文化,但是不如直接使用scaffold來得
快速,因為裡面的show、delete、create、list的連結都幫我們建置完畢了。
其實我也一直在網路上找尋解決的方案,但是一直都沒有收獲,期待高手解答!謝謝!
> > 方法呢?感謝!- 隱藏被引用文字 -
>
> - 顯示被引用文字 -

poga.b...@gmail.com

unread,
Feb 24, 2008, 8:55:36 AM2/24/08
to Ruby on Rails Taiwan
Rails 2.0的scaffold不再根據Model來建立Controller跟View,而是一口氣將MVC三部份以REST的風格完成

所以直接利用scaffold連model一起建好就好了,也就是說,不用先建model,直接

ruby script/generate scaffold Model_name xxx:string ooo:text

就從Migration, Model, 一路到Controller到View都完成。
Controller的名字會是Model_name的複數,View當然就也在Model_name的複數的資料夾底下。
詳細情形請參考Rails 2.0的RESTful說明。

要用以前的scaffold就裝舊的plugin吧

alant167

unread,
Feb 24, 2008, 2:40:59 PM2/24/08
to Ruby on Rails Taiwan
經您的一席話,果然讓我這一個星期以來的困惑全部釋放,剛剛測試了一下,就如同您所說的一樣,實在太感謝您了!感恩!

On 2月24日, 下午9時55分, "poga.baha...@gmail.com" <poga.baha...@gmail.com>
wrote:
> > > - 顯示被引用文字 -- 隱藏被引用文字 -
>
> - 顯示被引用文字 -

FireStoke

unread,
Apr 2, 2008, 12:12:10 AM4/2/08
to Ruby on Rails Taiwan
我之前也有相同的困擾
我試了你的Rails 2.0 scaffold方法,的確可行
不過呢,產生的View的部分,在edit.html及new.html裡
並不會根據該Model的DB migration裡給的欄位,而自動產出對應的編輯區塊

例如:
在Rails 1.2版,如果有個DB table裡有個欄位的data type是text
則做scaffold功能時,便會在view裡自動產生<TextArea>的input欄位
但在Rails 2.0版,似乎不會這樣做,而是給一個空的View,只有submit button
也許是因為2.0版的scaffold工作流程在建DB table與Model時,剛好跟1.2版是相反的關係?
(2.0是用model的migration code去建一個DB table,而1.2版是用建好的DB table去建model)
不知道有沒有方法可以達到跟1.2版一樣

poga.b...@gmail.com

unread,
Apr 2, 2008, 7:00:07 AM4/2/08
to Ruby on Rails Taiwan
你是指scaffold產生出的view是空的?

我在使用的時候並不會有這種問題喔

要記得現在的scaffold是完全靜態的,要用scaffold就要一開始就用,而且下指令的時候就要把欄位寫好,view才會自動生出來

像是ruby script/generate scaffold post title:string body:text這樣,連欄位名稱跟資料型
態都設好

如果只有下ruby script/generate scaffold post ,然後再去migration裡面加欄位的話,view是空白的是
很正常的 :)

FireStoke

unread,
Apr 3, 2008, 6:10:29 AM4/3/08
to Ruby on Rails Taiwan
原來如此...
不過我用NetBeans 6.0.1內建的ruby generate scaffold功能時
GUI介面上並沒有辦法去指定Model的欄位
看來只好自己下script了

On 4月2日, 下午7時00分, "poga.baha...@gmail.com" <poga.baha...@gmail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages