Problemas con paso de parámetros

Saludos a la comunidad, tengo un problema con los paso de parámetros
pues estoy haciendo una vista para que el usuario ingrese su cédula y
cuando haga click en link “Buscar” pueda ver la cédula con un estilo
Ajax debajo de la caja de texto. El problema que tengo es que el error
que me da es de nil. Pues como que no me pasa el parametro :cedula.

esto es lo que tengo en la vista:
<%= javascript_include_tag :defaults %>
<%= start_form_tag %>
<%= text_field :usuario, :cedula, :size=>15%>
<%= link_to_remote(“Buscar”,
:update => ‘dato’,
:url =>{:action => :buscar}) %>


<%= end_form_tag %>

en el controller:

def buscar
@mensaje=params[:usuario][:cedula]
render(:partial => “consulta”, :object=> @mensaje, :layout=> false)
end

y mi template _consulta esto es lo que tengo:
<%= @mensaje%>

Alguna ayuda!!!
Gracias de antemano.

On Feb 9, 2007, at 3:37 PM, Juan M. wrote:

  <%= text_field :usuario, :cedula, :size=>15%>
  <%= link_to_remote("Buscar",
                     :update => 'dato',
                     :url =>{:action => :buscar}) %>
   <div id="dato"></div>

<%= end_form_tag %>

Para enviar un formulario por Ajax en lugar de link_to_remote has de
abrir el form con remote_form_(tag|for).

– fxn

P.D.: Tambien existe submit_to_remote, pero esta pensado tan solo
para cuando remote_tag_* por el motivo que sea no pueda usarse.

Juan M. wrote:

Gracias amigo nuevamente, ya se como es esto de enviar parametros, ya
fuciona!!!

nos podes contar como envias los parametros? gracias

William B. wrote:

Juan M. wrote:

Gracias amigo nuevamente, ya se como es esto de enviar parametros, ya
fuciona!!!

nos podes contar como envias los parametros? gracias

Bueno amigo para el envió de parámetros a través de Ajax lo que hice fue
lo siguiente en mi vista hice esto:

<%= javascript_include_tag “prototype” %>
<%= form_remote_tag :url => { :action => ‘buscar’ }%>
Dato: <%= text_field_tag :dato %>
<%=submit_tag “Buscar”%>


<%= end_form_tag %>

Como puedes ver para el paso de parámetros estoy utilizando lo
siguiente; para abrir un formulario lo hago de esta manera:

<%= form_remote_tag %>

Y para guardar un parámetro utilizo esto:
<%= text_field_tag :dato %> #:dato es el nombre de la variable.

Seguimos……
En el controller tengo lo siguiente:

def buscar

@auxdato=params[:dato]

Ya aquí tienes el parámetro dato el cual viene de la aplicación. Por

ende ya #puedes utilizar el dato para lo que sea, ejemplo. En mi caso
era para hacer #una búsqueda de un usuario, te muestro el ejemplo.

@usuario = Usuario.find(:first, :conditions => “cedula =
‘#{@auxdato}’”)
render :update do |page|
if @usuario==nil
page.replace_html :accion , “Usuario
Inexistente”
else
page[:accion].update render(:partial => “usuario”,
:object=>@usuario)
end
end
end

Bueno amigo espero que te sirva para algo, si tienes alguna duda no hay
problema pregunta nuevamente.

Gracias amigo nuevamente, ya se como es esto de enviar parametros, ya
fuciona!!!

hola juan… mira me sirvio lo que pusiste pero no entiendo por que al
tener con ajax tengo que poner en el parametro con []

por ejemplo

<%= text_field_tag :detalle[cantidad] %>

pero cuando quiero recoger ese parametro no mostrarlo, sabes como puedo
hacerlo?? o si no cambiar de una forma que al poner el parametro
:cantidad

por ejemplo (en el mismo text_field) y en el controller lo tengo el
@detalle = Detalle.new(params[:detalle]) y despues con el Detalle.save
… habra alguna forma de enviarlo a la base de datos de otra forma y
poniendo los parametros :cantidad por ejemplo y no :detalle[cantidad]

espero tu ayuda… gracias

Francisco I. wrote:

hola juan… mira me sirvio lo que pusiste pero no entiendo por que al
tener con ajax tengo que poner en el parametro con []

por ejemplo

<%= text_field_tag :detalle[cantidad] %>

pero cuando quiero recoger ese parametro no mostrarlo, sabes como puedo
hacerlo?? o si no cambiar de una forma que al poner el parametro
:cantidad

por ejemplo (en el mismo text_field) y en el controller lo tengo el
@detalle = Detalle.new(params[:detalle]) y despues con el Detalle.save
… habra alguna forma de enviarlo a la base de datos de otra forma y
poniendo los parametros :cantidad por ejemplo y no :detalle[cantidad]

espero tu ayuda… gracias

Amigo Francisco para la interrogante de tu pregunta te tengo esta
respuesta cuando estas usando Ajax en un formulario puedes utilizar
<%=text_field %> como también <%=text_field_tag%>, no hay problema con
eso. Para recoger parametros de una forma muy rapida a la hora de ser
guardados te recomiendo que utilices <%=text_field %> con el siguiente
formato <%=text_field :detalle, :cantidad%> donde :detalle es el nombre
de tu tabla y :cantidad es el nombre de un atributo de tu tabla
(Recuerda que el nombre tiene que ser tal cual como esta en tu tabla).

A la hora de guardar lo unico que necesitas en el controller es lo
siguiente.

def guardar
@detalle = Detalle.new(params[:detalle])
@detalle.save
end

De esta manera se estaran guardando en la tabla detalle todos los
parametros que estan en tu view con el formato <%=text_field :detalle,
:cantidad%>.

Recuerda que si tienes varios parametros por guardar tu pagina deberia
ser algo asi:

Nombre:<%=text_field :detalle, :nombre%>
Cantidad:<%=text_field :detalle, :cantidad%>
Precio:<%=text_field :detalle, :precio%>

Recurda también que en <%=text_field %> son validas las opciones de html
como size, onFocus. etc. Ejmp <%=text_field :detalle, :cantidad,
‘size’=>10%>.

Bueno amigo espero que te sea util, cualquier cosa pregunta que para eso
estamos.

genial… me aclaraste muchas dudas que tenia al respecto gracias… pero
en ese caso despues de ingresar por ejemplo una factura, voy al
formulario de ingresar los detalles. pero por ejemplo nesesito hacer un
text_field o un input que tenga el numero de la factura que he ingresado
anteriormente, osea que al ingresar el detalle de la factura aparezca el
numero de la factura… asi no hayque escribirlo nuevamente, pero eso
seria un traspaso de parametros y a lo que voy es como se hace eso… ya
que no he podido hacer eso… mirate muestro mis codigospara que veas.

new.rhtml (de la factura)

Cliente:
<% @clientes.each do |cliente| %> > <%= cliente.nombre_emp %> <% end %>
Empresa <% @empresas.each do |empresa| %> > <%= empresa.nombre %> <% end %>
Nro Factura <%= text_field 'factura', 'nro_factura' %>
Fecha Emision
Fecha Recepcion
Nuemero Guia <%= text_field 'factura', 'nro_guia' %>
Condiciones de Pago <%= text_field 'factura', 'cond_pago' %>
Neto <%= text_field 'factura', 'neto' %>
IVA <%= text_field 'factura', 'iva' %>
Nombre Receptor <%= text_field 'factura', 'nombre_recibe' %>
Rut Receptor <%= text_field 'factura', 'rut_recibe' %>

<%= submit_tag “Create” %>

<% end %>


factura_controller.rb


def new
@factura = Factura.new
@clientes = Cliente.find (:all)
@empresas = Empresa.find (:all)
end

def create
@factura = Factura.new(params[:factura])

if @factura.save
flash[:notice] = ‘Factura was successfully created.’
redirect_to :action => ‘detalle’
else
render :action => ‘new’
end
end


Ahora en la parte de detalle de la factura

detalle.rhtml


Ingreso de detalles <%= javascript_include_tag "prototype" %>

Agregando detalles

<%= form_remote_tag(:update => “lista”,
:url => { :action => :crear_detalle },
:complete =>“Element.update(‘detalle’,’ ')”
)%>

Numero Factura:
<% @facturas.each do |factura| %> > <%= factura.nro_factura %> <% end %>
<table boder=1>
<tr>
<th>Cantidad</th>
<th>Detalle</th>
<th>Precio Unitario</th>
<th>Total</th>
</tr>
<tr>
  <td><%= text_field :detalle, :cantidad %></td>
  <td><%= text_field :detalle, :detalle %></td>
  <td><%= text_field :detalle, :precio_unitario %></td>
  <td><%= text_field :detalle, :total %></td>

<%= submit_tag "Agregar Detalle"%> <%= end_form_tag %>
------------------------------------------------------------------

ahora… en la parte que dice numero de factura (en detalle.rhtml) me
gustaria que estuviera el numero de factura que se ingreso en la factura
(new.rhtml que esta arriba)

espero tu ayuda… te estaria agradecido…

de antemo gracias