Forum: Rails-ES Problema con variables Ruby on Rails

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.
68816f183199ed945b00564fb9050ed6?d=identicon&s=25 Esteban Penagos (estebanxpj)
on 2014-10-15 23:00
Buenos Días, estoy haciendo una aplicación de pedidos en linea en Ruby
On Rails y tengo un problema que no e podido solucionar

Mi problema son el manejo de las variables en rails.

uno de los inconvenientes es que tengo un (select_tag) que lista los
descuentos (0, 10, 15) que se le otorgara al cleinte y  que se le
aplicaran a el costo de  los productos, pero primero no se como capturar
el valor que el usuario eligió del (select_tag)  para restarlo al valor
del producto y segundo no se como guardar ese valor en la base de datos,
ya tengo un campo descuento.

el codigo que tengo es:


<%=  select_tag "listadescuento",options_for_select([ "0", "10", "15" ],
"0"  %>

la pregunta como le asigno el valor que escogió el usuario a una
variable
o hay un método que me devuelva ese valor

gracias por su atencion
571b6dd148a79f321b2ecf0300681db9?d=identicon&s=25 Ivan Hinojal (ivan_h)
on 2014-10-27 13:23
Hola Esteban,
Ese select_tag deberia ser una propiedad del modelo, que en tu caso
imagino que seria pedido.

Para generar el formulario deberia ser algo asi:

  #views/order/_form.html.erb ??
  form_for @order ... do |f|
    ...
    f.select :listadescuento, [ "0", "10", "15" ]
    ...
  end

Asi te generaria algo asi:

  <select name="order[listadescuento]">
    <option value="0">0</option>
    <option value="10">10</option>
    <option value="15">15</option>
  </select>

Otras variaciones serian por ejemplo

  f.select :listadescuento,
    [ ["10",'descuentito'], ["15",'descuentazo'] ],
    , {include_blank: 'No quiero descuento'})

  <select name="order[listadescuento]">
    <option value="">No quiero descuento</option>
    <option value="descuentito">10</option>
    <option value="descuentazo">15</option>
  </select>

Luego en la accion del controlador podras recuperar el pedido (order)
asi:

  # app/controllers/order.rb
  def create
     @order = Order.new(order_params) # Recupera los atributos
             # pasados en el formulario usando
             # metodo privado order_params
     @order.save # Devuelve valor si supera
                 # las validaciones, nil si no
  end

  private # privado porque no es una accion del controlador
  def order_params
    params.require(:order).permit(:listadescuento, ...etc.. )
  end

A ver si te sirve..

_____________________________________________________
Aplicaciones web en rails a medida: http://drails.com
This topic is locked and can not be replied to.