Sumar variables de formulario en ruby on rails?

Publicado en 'Programación' por head777, 17 Dic 2009.





  1. head777

    head777 Miembro nuevo

    Registro:
    17 Dic 2009
    Mensajes:
    2
    Likes:
    0




    Hola, veran he buscado en internet informacion acerca de esto pero no he
    hallado mucho y es por esto que solicito de ustedes para que me ayuden.

    Pues como el tema os dice, el problema radica en que tengo un formulario
    en el cual despues ingreso esa informacion en la base de datos y me
    funciona todo correctamente pero el problema que tengo es que necesito
    sumar unas variables antes de introducir esa informacion en la tabla; es
    decir que tengo 3 variables cargo, abono y saldo en donde el usuario
    tiene que introducir el cargo actual y el abono y el saldo se tiene que
    generar automaticamente, pero no tengo ni la mas minima idea de como
    poder hacer esto y es por eso que os pido un poco de su
    conocimiento.

    Aqui os dejo mi control:

    def new
    @fichas = Ficha. New
    end

    def create
    @fichas = Ficha. New(@params['ficha'])
    if @fichas. Save
    redirect_to :controller =>"paciente", :action => "list"
    else
    render_action 'new'
    end
    end

    Y el codigo html esta mas o menos asi:

    <p><b><font color="white">Cargo:</font color></b><br>
    <input name="ficha[cargo]" size="30" type="text" />
    </p>
    <p><b><font color="white">Abono:</font color></b><br>
    <input name="ficha[abono]" size="30" type="text" />
    </p>
    <input type="submit" value="Crear Ficha"/>

    Pero como repito ni idea como sumar esas variables, por que en el
    control si se fijan lo que hace es un array para introducir la info y lo
    hace de una sola vez, que puedo hacer en este caso?


    Necesito aprender a sumar variables que provengan de formularios, pero ni idea de como empezar con este he buscado en google pero solo me enseña a hacerlo localmente, no desde un formulario!

    Bueno desde ya gracias!
     


  2. Yaraher

    Yaraher Miembro maestro

    Registro:
    26 Mar 2007
    Mensajes:
    313
    Likes:
    2
    Lo importante de entender de Rails y de cualquier framework es qué hace cada función que utilizas y como se comportan los elementos de éste.

    En tu caso, la acción create de tu controladora, en el método new lo único que hace es inicializar el objeto en memoria con el hash (no arreglo) de atributos que le has enviado desde el formulario.

    Eso es todo. Tienes total control del objeto inicializado. Caso distinto sería si utilizas el método create donde sí se graba el objeto en la base de datos. Pero de igual manera, no estás limitado para nada en el control.

    Si quieres sumar un par atributos o variables, pues simplemente harías eso, sumarlos.

    Tienes dos maneras de realizarlo:

    o

    En ambos casos, la lógica que continua es la correspondiente a grabar el objeto en la BD.

    Te recomiendo respetar las convenciones que tiene Rails para el llamado de sus variables e instancias. @ficha se debería utilizar en lugar de @fichas para los métodos donde sólo se manipula a un elemento. Usar éstas convenciones te facilitará mucho cuando uses plugins que te generan código o funcionalidad pero esperan que esas convenciones se cumplan.

    De igual modo, para llamar a los elementos del hash params he usado un símbolo en lugar de llamarlo como una cadena (:campo vs 'campo'). Existen diferencias técnicas que por ahora puedes obviar, pero te ayudará a entender mejor otros tutoriales si usas los símbolos.

    Suerte!
     
  3. head777

    head777 Miembro nuevo

    Registro:
    17 Dic 2009
    Mensajes:
    2
    Likes:
    0
    Hey muchas gracias por tu ayuda, me ha servido de mucho!!!:wow::wow::wow:

    Edito: De casualidad no sabes como hacer para poder tomar una variable por la url, es que veras con un enlace de esta forma: <%= link_to "Crear Ficha", :controller =>"fichas", :action=>"new", :id=>paciente.id %>

    Me puedo llevar un codigo de un paciente por medio de la url, pero ahora como estoy usando formularios, de rails asi:

    <%= error_messages_for :ficha %>

    <% form_for(@ficha) do |f| %>
    <p>
    <font color="white"><b>Paciente</b></font color><br />
    <%= f.text_field :paciente_id %>
    </p>

    Y esta manera de hacer formularios es nueva, necesito saber como poder tomar esa variable que tengo ahora en la url y imprimirla en este campo de texto y que a la vez, sea este de solo lectura!!

    Espero me puedas ayudar que esta al igual a la otra, esta rara!!

    Pero gracias desde ya por tu amabilidad!!
     
    Última edición: 23 Dic 2009