[Ror-es] ayuda con los helpers

Borja Martín borjam at dagi3d.net
Sat Sep 1 13:59:05 GMT 2007


Carlo Salas escribió:
> hola a todos
> tengo un problema con mi aplicacion
>
> ocupo crear un helper con el cual en un campo select pueda introducir
> datos que se van a guardar en la tabal.
> por ejemplo la vista que trabajo se llama citas atraves de un select en
> esta vista yo veo a los pacientes que estan en la tabla Paciente pero
> ocupo que si el paciente es nuevo o no aparece entre los campos se le
> pueda asignar la cita sin tener que llenar todos los campos de la tabla
> paciente solo con agregarlo en el select de pacientes. este es el select
> del _form
>
> <p><label for="cita_pacientes_id">Pacientes</label><br/>
> <%= select("post", "pacientes_id", Paciente.find(:all).collect {|p| [
> p.primer_nombre + " " + p.segundo_nombre + " " + p.primer_apellido + " "
> + p.segundo_apellido, p.id ] }, { :include_blank => false }) %></p>
>
> como podria crear eso
>   

La verdad es que no entendí muy bien cual era la pregunta y cual el 
problema que tenías, pero te aconsejaría que no hicieras las consultas 
dentro de la vista ya que ese no es no es su sitio, además de que no 
podrías reutilizar el listado obtenido si lo necesitaras sin tener que 
hacer la misma consulta otra vez. Digamos que a las vistas hay que 
tratarlas como si fueran lo más 'tontas' posibles. Y también te 
aconsejaría que te hicieras un método auxiliar que te devolviera el 
nombre completo ya que seguro que en más de un sitio querrás utilizarlo 
y así no tener que estar concatenando las distintas partes todo el rato. 
La cosa se quedaría más o menos así:

class Paciente
 
  def nombre_completo
    self.primer_nombre + " " + self.segundo_nombre + " " + 
self.primer_apellido + self.segundo_apellido
  end
end

class CitasController < ApplicationController
  def new
    # si fuese necesario, esto también te lo podrías llevar a otro 
método para reutilizarlo en más sitios
    @pacientes = Paciente.find(:all).collect { |paciente| 
[paciente.nombre_completo, paciente.id]}
    ..
   end
end

formulario:

<%= select :paciente, :id, @pacientes %>

Saludos

-- 
/**
 * dagi3d v4 | http://dagi3d.net
 */



More information about the Ror-es mailing list