Formularios y MySQL


#1

Buenas a todos.

Soy nuevo con rails, hace algun tiempo ya que programo cositas con ruby,
pero he decidido recientemente aprender rails, y me ha surgido alguna
duda, que tras mucho buscar no he conseguido resolver, y eso que tengo
la impresion que tiene que ser muy novata y sencilla. al grano:

Estoy haciendo una primera aplicación de prueba, y me interesa en un
metodo del controlador recibir datos desde un formulario (he utilizado
form_tag), y esos datos almacenarlos en la bd, y desde otro metodo del
controlador mostrarlos.

Prefiero hacerlo escrito manual sin scaffold, ya que solo quiero añadir
y ver, no las demas acciones, y ademas cuando intento crearlo con
scaffold no se me hace el formulario, y no me sirve de nada…

Dejo algo del código que tengo para que os guieis y me critiqueis xD:

controlador:

class NoticiasController < ApplicationController
def index
end

def añadir
@fecha = Time.now
@titulo = params[:formulario][:titulo]
@noticia = params[:formulario][:contenido]
end

end

Views:
añadir:

Añadir Noticia

<%= form_tag :action => “añadir” %>

Titulo: <%= text_field "formulario", "titulo", "size" => 20 %>

Noticia: <%= text_field "formulario", "contenido", "size" => 80 %>

<%= submit_tag %>

<%= form_tag %>

index:
del index no tengo nada porque no se como hacer las peticiones a la bd y
mostrar los datos, y porque no he podido añadir ningun dato aun :frowning:

Muchas Gracias


#2

La accion se llama “añadir” y funciona?

On 15/11/2008, at 22:19, Protos J. <ruby-forum-incoming@andreas-


#3

Bueno, añadir se llama el metodo del controlador, si. Y funciona, que
quieres decir?
El formulario si que está creado, el problema que no le envia los datos
a la bd porque no se hacerlo :S.

gracias.


#4

2008/11/15 Protos J. removed_email_address@domain.invalid

Bueno, añadir se llama el metodo del controlador, si. Y funciona, que
quieres decir?

Lo dice por la ‘ñ’ en la url

El formulario si que está creado, el problema que no le envia los datos
a la bd porque no se hacerlo :S.

Normalmente, lo que solemos hacer es referirte al cualquiera de los
muchos
manuales online y en libro, que hay disponibles para entender las bases
y
conceptos básicos de Rails, que parece que te fallan. Es decir, crear o
gestionar recursos es algo explicado en los primeros pasos de cualquier
tutorial. ¿Qué referencia estás usando?


#5

Protos J. escribió:

Creo que he conseguido enviar los datos a la bd, pero no rescatarlos:
@noticia.titulo=params[:formulario][:titulo]
index.rhtml:
Y este es el error que me muestra:

NameError in NoticiasController#index

uninitialized constant NoticiasController::Noticias

El mensaje te lo esta diciendo, la clase Noticias no esta declarada, en
el metodo index del controlador deberia ser:

def index
@noticias=Noticias.find(:all)
end

Me gustaria me recomendaras una buena documentación donde poder
apoyarme.

El “The Rails Way” de Obie despues de trabajar en algunos proyectos me
abrio los ojos.

Muchas Gracias

dnd


#6

El 16 de noviembre de 2008 0:24, Protos J. <
removed_email_address@domain.invalid> escribió:

Creo que he conseguido enviar los datos a la bd, pero no rescatarlos:
@noticia.titulo=params[:formulario][:titulo]
@noticia.contenido=params[:formulario][:contenido]
@noticia.fecha = Time.now
@noticia.save
end

Si te fijas en el index tienes NoticiaS, y al añadir usas Noticia…
pues
eso, que no existe ningún modelo Noticias

Saludos.


#7

Entiendo que es una duda muy incial, algo básico, pero esque ya anduve
buscando y no lo solucioné.
Andaba leyendo Agile web development with rails. Pero utilizan scaffold,
y yo prefiero hacerlo manualmente ya que el scaffold no me creaba nada
bien (seguro por culpa mia, pero prefiero hacerlo manual igual).
Por ello busqué en la red bastante antes de preguntar algo tan inicial,
pero no encontré solución.

Por lo de la ‘ñ’ creo que no hay problemas.

Creo que he conseguido enviar los datos a la bd, pero no rescatarlos:

controlador:

class NoticiasController < ApplicationController
def index
@noticias=Noticias.find(:all)
end

def añadir
@noticia=Noticia.new
@noticia.titulo=params[:formulario][:titulo]
@noticia.contenido=params[:formulario][:contenido]
@noticia.fecha = Time.now
@noticia.save
end

end

Cuando añado una noticia, no me da error, pero no tengo manera de saber
si se ha añadido o no ya que el index no me muestra nada:

index.rhtml:

Noticias

<%= for noticia in @noticias %>

<%= noticia.titulo %>

<%= noticia.contenido %> <%= end %> <%= link_to "Añadir noticia", :action => "añadir" %>

Y este es el error que me muestra:

NameError in NoticiasController#index

uninitialized constant NoticiasController::Noticias

Me gustaria me recomendaras una buena documentación donde poder
apoyarme.

Muchas Gracias