2011-12-11 7 views
7

Por mi forma estoy usando mi modelo Product:¿Cómo pasar un objeto en una etiqueta de botón de radio?

class Product < ActiveRecord::Base 
    attr_accessible :purchase_date, :send_to_data 
end 

En mi formulario tengo el :purchase_date de funcionar correctamente cuando se crea múltiples productos, pero también quiero hacer el radio_button_tag hacer lo mismo:

<%= form_tag create_multiple_products_path, :method => :post do %> 

    <%= date_select("product", "purchase_date") %> 

    <%= radio_button_tag(:send_to_data, 1) %> 
    <%= radio_button_tag(:send_to_data, 0) %> 


    <% @products.each_with_index do |product, index| %> 
    <%= fields_for "products[#{index}]", product do |up| %> 
     <%= render "fields", :f => up %> 
    <% end %> 
    <% end %> 

    <%= submit_tag "Done" %> 
<% end %> 

Esto no funcionó para mí, mi base de datos no marca como falsa o verdadera.

Creo que el problema radica en los parámetros del "send_to_data". A diferencia del "purchase_date", no encuentra el objeto (producto).

{"product"=>{"purchase_date(2i)"=>"12", "purchase_date(3i)"=>"11", "purchase_date(1i)"=>"2011"}, 
"send_to_data"=>"1", 
"products"=>{"0"=>{"product_name"=>"Test", "price"=>"23", "product_store"=>"13", "exact_url"=>""}, 
"1"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}, 
"2"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}, 
"3"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}, 
"4"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}}, "commit"=>"Done"} 

¿Hay alguna forma de asignarlo al objeto como lo hace la fecha de compra?

Respuesta

8

Por lo que yo puedo ver confundes FormHelper y FormTagHelper. Se utiliza ayudante etiqueta de formulario que, según la documentación

(FormTagHelper) ofrece una serie de métodos para la creación de etiquetas de formulario que no se basa en un objeto Active Record asignado a la plantilla como FormHelper hace.

Esta es la forma de formulario basada en ActiveRecord que necesita utilizar use FormHelper (y su método de ayuda radio_button).

Código radio_button_tag con forma de etiqueta de ayuda

<%= radio_button_tag(:send_to_data, 1) %> 
<%= radio_button_tag(:send_to_data, 0) %> 

genera el código HTML siguiente:

<input id="send_to_data_1" name="send_to_data" type="radio" value="1" /> 
<input id="send_to_data_0" name="send_to_data" type="radio" value="0" /> 

Y código con radio_button asistente de formulario

<%= radio_button("product", :send_to_data, 1) %> 
<%= radio_button("product", :send_to_data, 0) %> 

genera:

<input id="product_send_to_data_1" name="product[send_to_data]" type="radio" value="1" /> 
<input id="product_send_to_data_0" name="product[send_to_data]" type="radio" value="0" /> 

Espero que esto ayude!

3

cheque esta página form_helpers primera, aquí, el camino correcto debe ser

<%= radio_button_tag(:send_to_data, 1) %> 
<%= radio_button_tag(:send_to_data, 0) %> 
+0

Esto es extraño. Intenté esto y todavía obtengo los mismos resultados. Lo tengo accesible en mi modelo y sé que mi tabla de Productos lo ha/detectado porque mis datos iniciales muestran la columna junto con los Productos que están marcados como verdadero/falso, pero al crearlos parece que no lo hace. – LearningRoR

Cuestiones relacionadas