Ya estoy mas que frito. Genere un scaffold sencillisimo para un modelo
Post.
El form para new que se genero hace esta pinta
New post
<% form_for(@post, :action => :create) do |f| %>
<%= f.error_messages %>
<%= f.label :title %>
<%= f.text_field :title %>
.
.
.
<%= f.submit "Create" %>
<% end %>
Misteriosamente, no se invoca el create del controller. Incluso ya
paranoico trate de escribir en log para comprobarlo:
def create
@post = Post.new(params[:post])
ActiveRecord::Base.logger.debug ‘estuve en create ------------’
respond_to do |format|
if @post.save
flash[:notice] = ‘Post was successfully created.’
.
.
.
Pues en el log no aparece mi mensaje. Alucino porque el codigo es tal
cual lo genero el scaffold. Aun asi seguro que el fallo es mio (aun
estoy en rodaje
)
Agradezco cualquier idea, porque a mi se mea acabaron…gracias
anticipadas
Para depurar este problema deberias tener un tail del log y ver que
peticion se esta realizando de veras.
Por otro lado, es posible que la opcion :action no fuera generada.
Si el código real es el que has pegado, estas usando mal el helper
form_for,
con esto deberia generar la ruta correcta:
<% form_for(@post) do |f| %>
en el caso de que quieras especificar una accion diferente es asi:
<% form_for(@post, :url => {:action => :create}) do |f| %>
Siempre es bueno ver el codigo fuente de la pagina para que veas si el
helper ha generado lo correcto, aqui algo de documentación:
http://apidock.com/rails/ActionView/Helpers/FormHelper/form_for
Saludos.
Comprueba que la versión del Mongrel esté al dÃa tuve un problemilla
cuando subà a la
2.1 por qué tenÃa una versión vieja y no interpretaba bien los verbos.
sudo gem update mongrel
Si no comprueba el rake route a ver que te sale.
Saludos!
ciertamente el codigo generado es
<% form_for(@post) do |f| %>
lo del :action => :create es un intento mio (erroneo, como indica Ruben)
Con el codigo generado original el tail mostraba claramente :action =>
:index y el verbo HTTP mostraba POST. La cosa era extraña porque el
routes mostraba correctamente que la ruta /posts con POST debia mapearse
en :action => :create. pero no habia manera. Al arrancar la maquina hoy,
todo funciona ok con el codigo original y no puedo reproducir el
problema. La unica cosa que me hace sospechar es que invoque el scaffold
con la aplicacion en marcha y el enviroment en development, of course.
En principio todo se deberia refrescar pero sospecho ahora que no del
todo ya que tras generar y sin tocar nada ya no iba. Confie tanto en el
autorefrescado del Rails que no probe la vieja receta de ‘salir y volver
a entrar’ :(.
En fin, mil gracias.
Ruben Davila wrote:
Si el código real es el que has pegado, estas usando mal el helper
form_for,
con esto deberia generar la ruta correcta:
<% form_for(@post) do |f| %>
en el caso de que quieras especificar una accion diferente es asi:
<% form_for(@post, :url => {:action => :create}) do |f| %>
Siempre es bueno ver el codigo fuente de la pagina para que veas si el
helper ha generado lo correcto, aqui algo de documentación:
form_for (ActionView::Helpers::FormHelper) - APIdock
Saludos.
Si lo que quieres es hacer un form hacia el create creo que con algo
como un
<% form_for(Post.new) … deberÃa ir bien.
Si tu @post ya es un Post.new deberia hacer el form hacia el create.
2008/10/1 Pablo Formoso E. [email protected]