hola a todos, soy nuevo en este foro pero creo que ultimamente sere muy persistente aca ya que me encuentro desarrollando una aplicacion en rails la cual me ha llevado a una serie de preguntas y dudas unas las he solucionado en foros otras mirando en libro; en fin voy a la pregunta :D
en mi aplicacion tengo una relacion muchos a muchos asi:
el modelo categoria
Código HTML:
class Categoria < ActiveRecord::Base
has_many :categoriaespecificacion
has_many :especificaciones, :through => :categoriaespecificacion
validates :nombre, :presence => { :message => " no puede estar en blanco"}, :uniqueness => { :message => " ya existe"}
validates :especificacion_ids, :presence => { :message => " no puede estar en blanco"}
end
el modelo especificacion
Código HTML:
class Especificacion < ActiveRecord::Base
has_many :categoriaespecificacion
has_many :categorias, :through => :categoriaespecificacion
def to_s
"#{ @nombre }"
end
end
y el modelo categoriaespecificacion
Código HTML:
class Categoriaespecificacion < ActiveRecord::Base
belongs_to :categoria
belongs_to :especificacion
attr_accessible :categoria_id, :especificacion_id , :visible
end
lo que necesito que haga la aplicacion es permitir guardar una categoria la cual puede tener muchas especificaciones y ademas de eso guardar un campo llamado visible en caso de marcarlo este permite mostrar en cierta parte esa especificacion y las demas las oculta el form de la vista categorias es asi:
Código HTML:
<%= form_for(@categoria) do |f| %>
<% if @categoria.errors.any? %>
<div id="error_explanation">
<div class="alert alert_red">
<img height="24" width="24" src="/images/icons/small/white/alert_2.png">
se han encontrado <%= pluralize(@categoria.errors.count, "error") %> en esta categoria
</div>
<ul>
<% @categoria.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :nombre %>
<%= f.text_field :nombre %>
</div>
<div class="box grid_8 round_all">
<h2 class="box_head grad_colour round_top">Clasificaciones</h2>
<a href="#" class="toggle"> </a>
<div class="toggle_container">
<div class="block">
<table border='1' width="50%">
<%= for especificacion in Especificacion.all do %>
<tr>
<td><%= especificacion.nombre %></td>
<td>
Marcar Especificacion <%= check_box_tag "categoria[especificacion_ids][]", especificacion.id, @categoria.especificaciones.include?(especificacion) %>
</td>
<td>
Marcar Nombre <%= select_tag("visible[]",options_for_select([["si",1],["no",0]])) %>
</td>
</tr>
<% end %>
</table>
</div>
</div>
</div>
<div class="field">
<%= f.label :descripcion %>
<%= f.text_area :descripcion %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
actualmente al guardar una categoria; esta me guarda las especificaciones que he seleccionado asi entoncse me guarda el nombre y la descripcion en la tabla categoria y tambien me guarda el id de la categoria (categoria_id) y los id de las especificaciones(especificacion_id) el problema esta que no se como enviar el valor de el campo visible para poderlo guardar ya que en la tabla me queda guardado asi:
categoria_id especificacion_id visible
1 1 NULL
1 2 NULL
1 3 NULL
gracias por sus respuestas