2009-08-22 25 views
6

que tienen 2 modelos:Rieles: Ahorro de muchos nuevos objetos en una forma anidada

vídeo:

class Video < ActiveRecord::Base 
    belongs_to :user 
    has_many :thumbnails 
    attr_accessor :search, :saveable 
    accepts_nested_attributes_for :thumbnails, :allow_destroy => true 
en 

d

miniatura:

class Thumbnail < ActiveRecord::Base 

    belongs_to :video 

end 

estoy usando el YouTubeG joya para buscar videos.

Cada vídeo que es devuelto por la búsqueda tiene una forma en la vista:

<% form_for :video, :url => videos_path, :html => { :class => :form } do |f| -%> 
    <%= f.hidden_field :url, :value => video.unique_id %> 
    <%= f.hidden_field :name, :value => video.title %> 
    <%= f.hidden_field :user_id, :value => current_user.id %> 
    <% if video.thumbnails.present? %> 
    <% f.fields_for :thumbnails, video do |t| %> 
     <% video.thumbnails.each do |thumbnail| -%> 
     <%=image_tag thumbnail.url %> 
     <%=t.text_field :url, :value => thumbnail.url %> 
     <% end -%> 
    <% end -%> 
    <% end %> 
    <%= f.submit "Save" %> 
<% end -%> 

El f.fields_for: miniaturas produce <input type="hidden" value="http://i.ytimg.com/vi/s8eigkwmMEo/0.jpg" name="video[thumbnails][url]" id="video_thumbnails_url"/>

que parece mal porque quiero salvar a todas las miniaturas para este video

Cuando intento para salvar consigo

ActiveRecord :: AssociationTypeMismatch en VideosController # crea

Parámetros:

{ "comprometerse" =>, "video" en "Guardar" => { "nombre" => "Karajan - Beethoven Symphony No. 7", "url" => "s8eigkwmMEo", "user_id" => "1", "thumbnails" => {"url" => "http://i.ytimg.com/vi/s8eigkwmMEo/0.jpg" }}} < debe haber 4 miniaturas

Respuesta

6

he encontrado la respuesta correcta:

<% f.fields_for "thumbnails_attributes[]", Thumbnail.new do | t | %>

en lugar de

<% f.fields_for :thumbnails, video do |t| %> 
0

Usted debe utilizar la función de índice de la fields_for ayudante:

<% video.thumbnails.each do |thumbnail| -%> 
    <% f.fields_for "thumbnail[]", thumbnail do |t| %> 
    <%=image_tag thumbnail.url %> 
     <%=t.text_field :url, :value => thumbnail.url %> 
    <% end -%> 
    <% end -%> 

Mire a través de los carriles arroja edipode trilogía sobre formas complejas: Episode 1

+1

Hay nuevos episodios en formas anidadas para Rails 3: http://railscasts.com/episodes/196-nested-model-form-part-1 y http: //railscasts.com/episodes/197-nested-model-form-part-2 –

Cuestiones relacionadas