Forum: Rails-ES Formularios y MySQL

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
B75a2c3a6180b6589892c71eeae0937e?d=identicon&s=25 Protos Jack (rubystudent)
on 2008-11-15 22:19
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:

<h1> Añadir Noticia </h1>

<%= form_tag :action => "añadir" %>
<p><label for="formulario_titulo">Titulo:</label>
<%= text_field "formulario", "titulo", "size" => 20 %> </p>

<p><label for="formulario_contenido">Noticia:</label>
<%= text_field "formulario", "contenido", "size" => 80 %> </p>

<p> <%= submit_tag %></p>

<%= form_tag %>

</body>

</html>


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 :(


Muchas Gracias
F625b891618be8ec32547a07b3192bb0?d=identicon&s=25 Francesc Esplugas (fesplugas)
on 2008-11-15 23:30
(Received via mailing list)
La accion se llama "añadir" y funciona?

On 15/11/2008, at 22:19, Protos Jack <ruby-forum-incoming@andreas-
B75a2c3a6180b6589892c71eeae0937e?d=identicon&s=25 Protos Jack (rubystudent)
on 2008-11-15 23:48
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.
5c15703984caa012845b3cea129da936?d=identicon&s=25 Manuel González Noriega (Guest)
on 2008-11-16 00:15
(Received via mailing list)
2008/11/15 Protos Jack <ruby-forum-incoming@andreas-s.net>

> 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?
B75a2c3a6180b6589892c71eeae0937e?d=identicon&s=25 Protos Jack (rubystudent)
on 2008-11-16 00:24
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:

<h1> Noticias </h1>

<%= for noticia in @noticias %>
<h2> <%= noticia.titulo %> </h2> </br>
<%= noticia.contenido %>
<%= end %>
</br>
<%= 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
Bc309914890c202136d6964cb3033ceb?d=identicon&s=25 cartuchoGL (Guest)
on 2008-11-16 20:34
(Received via mailing list)
Protos Jack 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
36af729ef2005f18edc9b839f1eeb14b?d=identicon&s=25 Dani Latorre (Guest)
on 2008-11-17 02:10
(Received via mailing list)
El 16 de noviembre de 2008 0:24, Protos Jack <
ruby-forum-incoming@andreas-s.net> 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.
This topic is locked and can not be replied to.