2010-06-22 66 views
0

1問:Rails的腳手架也有其缺點

我努力使創建工作方法,但現在看來,我的形式innapropriately將數據發送到我的數據庫。這是server.log的:

Processing Admin::AdminWysisController#create (for ::1 at 2010-06-22 13:43:58) [POST] 
Parameters: {"commit"=>"save", "action"=>"create", "authenticity_token"=>"P8pW7GnSNr7RZcxFcejpfsu9YCX7z8hO0DJPH3rYalQ=", "controller"=>"admin/admin_wysis", "admin_wysi"=>{"post_published"=>"<p>\r\n\tstinky</p>\r\n"}} 
User Columns (2.0ms) SHOW FIELDS FROM `users` 
User Load (0.3ms) SELECT * FROM `users` WHERE (`users`.`id` = '1') LIMIT 1 
SQL (0.1ms) BEGIN 
User Update (0.2ms) UPDATE `users` SET `updated_at` = '2010-06-22 17:43:58', `perishable_token` = 'XMxt1yi5_4JEwPP-21GO', `last_request_at` = '2010-06-22 17:43:58' WHERE `id` = 1 
SQL (0.4ms) COMMIT 
AdminWysi Columns (1.0ms) SHOW FIELDS FROM `admin_wysis` 
SQL (0.1ms) BEGIN 
AdminWysi Create (0.1ms) INSERT INTO `admin_wysis` (`post_published`) VALUES(NULL) 
SQL (0.4ms) COMMIT 
Redirected to http://localhost:3000/admin/admin_wysi 
Completed in 139ms (DB: 5) | 302 Found [http://localhost/admin/admin_wysi] 
SQL (0.1ms) SET NAMES 'utf8' 
SQL (0.1ms) SET SQL_AUTO_IS_NULL=0 

該聲明的最重要的部分是這個:

"admin_wysi"=>{"post_published"=>"<p>\r\n\tasdfasdfasd</p>\r\n"} 

應只是簡單:

"post_published"=> "<p>\r\n\tasdfasdfasd</p>\r\n" 

讓我們看一下我的看法..

- form_for @admin_wysi, :url => admin_admin_wysi_path do |f| 
    = f.error_messages :header_message => FORM_ERROR_HEADER_MESSAGE, :message => FORM_ERROR_MESSAGE 
    = f.cktext_area :post_published, :cols => '70', :rows => '30', :width => '555px', :height => '240px', :toolbar => 'HQ' 
    %br/ 
.grid_2.prefix_5.align_right 
    = f.submit 'save', {:class => 'button'} 

她e是我的控制器:D

def new 
@admin_wysi = AdminWysi.new 
end 

def create 
    @admin_wysi = AdminWysi.new(params[:admin_wysi]) 
    if @admin_wysi.save 
    redirect_to admin_admin_wysi_path 
end 
end 

任何想法什麼可能是這樣的?

第二個問題
奇怪,因爲它是,當它保存,它重定向我website.com/wysi不website.com/wysis/。後者是一個工作鏈接,前者不是真正的鏈接。

我的routes.rb看起來是這樣的:

map.namespace :admin do |admin| 
    admin.resource :admin_wysi 
end 

回答

0

你得到的PARAMS是什麼在一個Rails應用程序的預期。否則,沒有好方法只訪問保存對象的一部分參數(例如,丟棄commit,action等鍵/值對)。您從創建操作中獲得了哪些錯誤?如果它重定向你,它似乎可能不會在保存時出錯。

至於你的路由問題,你得到單數(wysi)而不是複數(wysis)的原因是你使用的是map.resource而不是map.resources。如果你改變了這一點,我相信它應該解決路由問題。

+0

非常感謝您的回覆。我做了複數。不用擔心,這有幫助。另外,上面我包含了完整的SQL語句。你可以看到沒有錯誤,而我原來在那裏的那個實際上是一種可接受的添加數據的方式。注意,儘管在聲明中這一行<<<<< INSERT INTO'admin_wysis'('post_published')VALUES(NULL)>>>>有趣嗎?不知道這意味着什麼..無論如何,非常感謝。 – Trip 2010-06-22 19:22:53

+0

哈哈......爲什麼默認的導軌移動會導致表格單元格爲空? – Trip 2010-06-22 19:35:41

+0

原來我在我的模型中有一個attr_accessor:post_published,它使得寫入該字段的任何內容都變爲空白。 – Trip 2010-06-22 19:42:18