Aquí hay un fragmento de código que estoy usando ahora:
<%= f.select :project_id, @project_select %>
¿Cómo modificarlo para que su valor predeterminado sea igual a params[:pid]
cuando se carga la página?
ruby-on-rails
totocaster
fuente
fuente
Respuestas:
Esto debería hacerlo:
fuente
options_for_select
es mejor manera. Es bueno para cualquier situación, bueno para editar formularios también.Use el atributo correcto de la instancia actual (por ejemplo
@work.project_id
):fuente
select_tag
. Gracias, realmente me ayudó también.options_for_select(..., f.object.project_id )
Carriles 3.0.9
fuente
value3], default
El problema con todas estas respuestas es que establecen el campo en el valor predeterminado, incluso si está intentando editar su registro.
Debe establecer el valor predeterminado en su valor existente y luego solo establecerlo en el valor predeterminado real si no tiene un valor. Al igual que:
Para cualquier persona que no esté familiarizada con
f.object.field
usted, use siempre yf.object
luego agregue su nombre de campo al final de ese.fuente
select2
complemento JS. Funciona perfectamente si está creando o editando registros con el mismo formulario y usando select2, especialmente con texto de marcador de posición.Prueba esto:
fuente
params[:pid]
no funcionó, pero su ejemplo sí.si params [: pid] es una cadena, que si proviene de un formulario, es probable que necesite usar
para seleccionar el elemento correcto en la lista de selección
fuente
@project
variable con una identificación de la tabla de la base de datos, en lugar de un título, este código funcionó adjunto en la parte posterior delform.select
ayudante:selected: @project
Gracias @danengleHe encontrado una solución y descubrí que no tengo mucha experiencia en RoR.
Dentro del controlador que administra la vista descrita anteriormente, agregue esto:
fuente
fuente
No pude hacer que esto funcionara y descubrí que necesitaba agregar el atributo html "seleccionado" no solo a la
<option>
etiqueta correcta sino también a la<select>
etiqueta. Los documentos de MDN en el atributo seleccionado de la etiqueta select dicen:Eso significa que el código debería verse así:
fuente
fuente
Alternativamente, puede establecer el atributo: project_id en el controlador, ya que el primer argumento de f.select extrae ese atributo en particular.
fuente
Si intenta imprimir el objeto f, verá que hay un objeto f.que se puede probar para obtener el elemento seleccionado (aplicable para todas las versiones de rieles> 2.3)
entonces, use el siguiente script para obtener la opción seleccionada adecuada:
fuente
Ya está explicado, intentará dar un ejemplo
deja que la lista de selección sea
Entonces, el siguiente código da como resultado
Entonces, para hacer una opción seleccionada por defecto, tenemos que usar selected: value .
if can_vote? devuelve verdadero, establece seleccionado: 1, luego se seleccionará el primer valor, de lo contrario será el segundo.
si las opciones de selección son solo una lista de matriz en lugar de hast, entonces lo seleccionado será solo el valor a seleccionar, por ejemplo si
ahora el seleccionado solo tomará
fuente
La respuesta anterior de Mike Bethany funcionó para establecer un valor predeterminado cuando se creaba un nuevo registro y todavía tenía el valor que el usuario seleccionado mostraba en el formulario de edición. Sin embargo, agregué un modelo de validación y no me permitió enviar el formulario. Esto es lo que funcionó para mí para tener una validación de modelo en el campo y mostrar un valor predeterminado, así como el valor que el usuario seleccionó cuando estaba en modo de edición.
Modelo de validación
fuente
Esto debería funcionar para ti. Simplemente pasa
{:value => params[:pid] }
a la variable html_options.fuente