2010-01-11 10 views
28

Estoy creando una aplicación, donde los usuarios pueden dar sus comentarios simplemente dejando su correo electrónico al comentario.formtastic - cómo rellenar previamente una entrada de cadena con un valor

Quiero que se puedan registrar directamente desde allí, por un enlace con su dirección de correo electrónico como un parámetro
(como: <%= link_to register_path(:email => @comment.email %>) - por lo que aún no existe un registro de usuario.
esto se debe hacer aplicando un valor al campo form.input a través de la opción :value.

¡Pero el siguiente código no funciona!

<%- if params[:email] -%> 
    <%= f.input :email, :required => true, :value => params[:email] %> 
<%- else -%> 
    <%= f.input :email, :required => true %> 
<%- end -%> 

que tenía un aspecto en el interior del formtastic rdoc y dentro de mi joya local, pero no pudo encontrar ninguna opción para ello.

Sugerencias ¿alguien?

Respuesta

66

¡Sí, tienes la respuesta correcta para ti solo! El rdoc de Formtastic es un desastre, pero estamos trabajando en ello. Otra opción si desea que esta en un nivel puramente vista es utilizar la opción :input_html, que le da acceso directo a los atributos HTML de la etiqueta de entrada:

f.input :email, :input_html => { :value => params[:email] } 
+0

+1 ya que es mejor que la respuesta aceptada. Si desea hacer algo como aplicar un método de vista auxiliar al valor de entrada, ese código pertenece a la vista, no al controlador. – jdl

+0

Esto hizo el trabajo, pero no deberíamos tener algo como: value_method. ES DECIR. f.input: my_date,: value_method =>: formateado –

+0

Abe, siéntase libre de agregar un problema en GH. –

9

veces las cosas más fáciles que vienen a la mente al pedir para ellos:

enfoque: hacer el trabajo en no el controlador de la vista!

if params[:email] 
    @user = User.new(:email => params[:email]) 
else 
    @user = User.new 
end 

disculpa por molestarte!

+2

o simplemente: '@user = User.new (: correo electrónico => params [: email]) 'si es nulo, el resultado final es el mismo. Excepto si la inicialización de @user configura el correo electrónico. – Leito

Cuestiones relacionadas