我有2个型号:
视频:
class Video < ActiveRecord::Base
belongs_to :user
has_many :thumbnails
attr_accessor :search, :saveable
accepts_nested_attributes_for :thumbnails, :allow_destroy => true
en
d
缩略图:
class Thumbnail < ActiveRecord::Base
belongs_to :video
end
我正在使用YouTubeG gem来搜索视频。
搜索返回的每个视频在视图中都有一个表单:
<% 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 -%>
f.fields_for:缩略图生成
<input type="hidden" value="http://i.ytimg.com/vi/s8eigkwmMEo/0.jpg" name="video[thumbnails][url]" id="video_thumbnails_url"/>
这似乎有误,因为我想保存此视频的所有缩略图。
当我尝试保存时,我得到了
VideosController #create中的ActiveRecord :: AssociationTypeMismatch
参数:
{ “提交”=&gt; “中保存”, “video”=&gt; {“name”=&gt;“卡拉扬 - 贝多芬第7号交响曲”, “URL”=&gt; “中s8eigkwmMEo”, “USER_ID”=&gt; “中1”, “缩略图”=&gt; {“url”=&gt;“http://i.ytimg.com/vi/s8eigkwmMEo/0.jpg”}}} &lt;应该有4个缩略图
答案 0 :(得分:6)
我找到了正确的答案:
<% f.fields_for "thumbnails_attributes[]", Thumbnail.new do
| t | %GT; 强>
而不是
<% f.fields_for :thumbnails, video do |t| %>
答案 1 :(得分:0)
您应该使用fields_for
帮助程序的索引功能:
<% 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 -%>
通过rails演示关于复杂形式的edipode三部曲: Episode 1