Pregunta

¿Cómo se establece un ID personalizado cuando se utiliza un ayudante check_box_tag en los carriles?

Tengo un bucle que crea un grupo de casillas de verificación sobre la base de una colección:

- subject.syllabus_references.each do |sr|
      = check_box_tag 'question[syllabus_reference]', sr.id, :id => sr.id
      = label_tag sr.id, sr.name

Me gustaría establecer un identificador personalizado, de modo que mi etiqueta de la casilla de verificación funciona correctamente, pero me parece que no puede encontrar la manera (: id => sr.id no funciona ...).

El problema también podría ser con la forma en que he definido de la etiqueta, lo que si puedo conseguir que hacer referencia a la casilla correcta sin establecer un ID personalizado a continuación, que estaría bien también ...

¿Fue útil?

Solución

He utilizado este en mi solicitud para crear etiquetas de casilla de verificación de la colección y presentar una gran variedad de ellos:

<% @cursos.each do |c| %>
  <span class='select_curso'>
    <%= check_box_tag "vaga[curso_ids][]",
      c.id, (checked = true if form.object.curso_ids.include?(c.id)) %>
    <%= label_tag "vaga[curso_ids][][#{c.id}]", c.nome %>
  </span>
<% end %>

Así que en params, tengo una array "curso_ids" => [ "1", "3", "5"] lugar de una cadena "curso_ids" => "5 ". Si desea devolver un solo valor, el uso vaga [curso_id] , de lo contrario usar vaga [curso_ids] [] para devolver una matriz.

Otros consejos

Si le das a la casilla de verificación un parámetro adicional que va a funcionar:

= check_box_tag 'question[syllabus_reference]', 1, nil, :id => sr.id

@Ganesh, en la solución de la params hash resultante tiene la siguiente forma:

params[:question][:syllabus_reference] = {1 => 1, 2 => 2, 3 => 3, ...}

Estos deberían funcionar mejor para usted:

check_box_tag "question[syllabus_reference][]", sr.id, checked, {:id => "question_syllabus_reference_#{sr.id}"

Se requiere Aviso el tercer parámetro (comprobado) para que esto funcione. La matriz params resultante será

params[:question][:syllabus_reference] = {1, 2, 3, ...}

Piense lo he descubierto ...

- subject.syllabus_references.each do |sr|
  = check_box_tag "question[syllabus_reference][#{sr.id}]", sr.id
  = label_tag "question[syllabus_reference][#{sr.id}]", sr.name

esto funciona, pero si usted tiene una mejor manera que me haga saber!

Esto fue muy servicial y nos trajeron mi búsqueda días de duración a su fin. La mayor parte de lo que me había encontrado hasta ahora contenida sintaxis y parámetros adicionales que sea carriles marcados o ignoradas por completo. Todo lo que quiero hacer es pasar una matriz de mi vista a mi regulador del uso y casillas de verificación para indicarle al controlador que elementos de la matriz a proceso. Yo era capaz de reducir la anteriormente aún más, a:

<%= check_box_tag "c[]", c.id %>

c donde viene de mi base de datos:

<%= @objects.each do |c| %>

Esto por supuesto pasa una matriz de id de objeto a mi controlador pertenece sólo a las entradas de marcado (las entradas son sin marcar de forma predeterminada desde que me fui a cabo la : false parámetro, que por cierto produce el mismo resultado como . true ), que es casi todo lo que necesito

Ahora sólo hay que pasar en un indicador de tipo de objeto - aunque sólo sea una cadena literal va a hacer muy bien - por lo que el controlador sabe qué tipo de objeto que es mi proceso sin tener que aumentar mi modelo con una columna adicional. Voy a empezar en el que de vez en publicar mi solución, pero por favor, hágamelo saber si hay una manera rápida y fácil de hacer esto si usted ya sabe.

muestra HAML

Digamos que tiene un objeto en algún lugar print con un atributo framed, usted tiene que mostrar una lista de por lo prints dentro del bucle se creará un row costumbre y column con id único en cada checkbox para la actualización framed

.input.row.collapse
  = check_box_tag :framed, print.framed, nil, { id: "framed_#{print.id}" }

Leito,

Sólo para cerrar el bucle, me di por vencido tratando de pasar un indicador de tipo de objeto a través de check_box_tag . Cada parámetro I añadido a la sintaxis mostrada en mi último post encima (por debajo ??) causado simplemente el estado casilla de verificación para predeterminado a comprobado en lugar de controla , sin pasar ningún dato adicional al controlador.

Si bien se mantiene alerta a soluciones alternativas tal como se presentan, por el momento incorporo el tipo de objeto en el valor submit_tag. Esto se relaciona la funcionalidad de la pantalla, ya que el submit_tag valor es lo que se muestra al usuario en el botón de envío, pero se podría argumentar que esta claridad fuerzas a la vista, incluso, ya que proporciona desambiguación necesaria para la controlador.

Aprendizaje día a día ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top