2010-06-22 4 views
0

1ère question:échafaudage Rails à partir de zéro a ses inconvénients

Je suis en train de faire le travail de créer de la méthode, mais il semble que ma forme envoie des données innapropriately à mon DB. Ceci est le 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 

La partie la plus importante de cette déclaration est celle-ci:

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

qui devrait être tout simplement:

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

Regardons mon point de vue ..

- 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'} 

Son e est mon contrôleur: 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 

Une idée de ce qui pourrait être bugging cela?

2ème question
Aussi étrange que cela est, quand il sauve, il me redirige vers website.com/wysi~~V~~singular~~1st pas website.com/wysis/. Ce dernier est un lien de travail, le prieur n'est pas un lien réel.

Mon routes.rb ressemble à ceci:

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

Répondre

0

Les params que vous obtenez sont ce que l'on attend dans une application Rails. Sinon, il n'y aurait aucun moyen d'accéder uniquement aux paramètres qui font partie de l'objet de la sauvegarde (par exemple, pour supprimer les paires clé/valeur commit, action, etc.). Quelles erreurs obtenez-vous de l'action de création? Si cela vous redirige, il semble que vous n'obtiendrez probablement pas d'erreurs lors de l'enregistrement. En ce qui concerne votre problème de routage, la raison pour laquelle vous obtenez le singulier (wysi) plutôt que le pluriel (wysis) est que vous utilisez map.resource au lieu de map.resources. Si vous changez cela, je crois que cela devrait régler le problème de routage.

+0

merci beaucoup pour votre réponse. Je l'ai fait pluriel. Pas de soucis là-bas, ça m'a aidé. En outre, ci-dessus j'ai inclus l'instruction SQL complète. Vous pouvez voir qu'il n'y a pas d'erreurs, et celle que j'avais à l'origine est en fait un moyen accepté d'ajouter des données. Notez bien dans la déclaration cette ligne <<<<< INSERT INTO 'admin_wysis' (' post_published') VALEURS (NULL) >>>> Intéressant? Je ne sais pas ce que cela signifie .. Quoi qu'il en soit, merci beaucoup. – Trip

+0

Haha..pourquoi une migration de rails par défaut rendrait une cellule de table nulle? – Trip

+0

Il s'avère que j'avais un attr_accessor: post_published dans mon modèle qui faisait en sorte que tout ce qui était écrit dans ce champ finissait vide. – Trip

Questions connexes