2010-06-22 65 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