我有照片模型和画廊模型。画廊模型(我使用漂亮的脚手架)只有一个字段,一个画廊名称。 在我的照片编辑表单中,我想将每张照片链接到一个图库,例如。我创建了2个独立的画廊2009年和2010年,我希望每个照片编辑页面上都有一个下拉列表和画廊列表,因此每张照片都可以放在一个画廊中。 我一直在使用this 和this 作为起点,但我被卡住了,无法让我的照片形式出现。
class Gallery < ActiveRecord::Base
has_many :photos
attr_accessible :name
end
class Photo < ActiveRecord::Base
belongs_to :gallery
accepts_nested_attributes_for :gallery, :allow_destroy => true
视图/照片/ _form.html.erb
<% form_for @photo, :html => { :multipart => true } do |photo_form| %>
<p>
<%= photo_form.label :title %><br />
<%= photo_form.text_field :title %>
</p>
<p>
<% photo_form.fields_for :gallery do |gal_form| %>
<%= gal_form.label :name %>
<%= gal_form.collection_select :gallery_id, Gallery.all, :id, :name %>
</p>
<% end %>
<p>
<%= submit_tag %>
</p>
<% end %>
目前在照片表单页面上没有下拉列表,但我没有收到任何错误,也没有在页面源中提及它。 我会感激任何帮助或指出正确的方向......
答案 0 :(得分:2)
如果您的照片属于图库,则不是照片上的gallery_id
?因此,gallery_id将是photo_form
的成员,而不是gal_form
的成员。
<%= photo_form.collection_select :gallery_id, Gallery.all, :id, :name %>
更新:
以下是我将如何看待您的观点:
<% form_for @photo, :html => { :multipart => true } do |photo_form| %>
<p>
<%= photo_form.label :title %><br />
<%= photo_form.text_field :title %><br />
<%= photo_form.collection_select :gallery_id, Gallery.all, :id, :name %>
</p>
<p>
<%= submit_tag %>
</p>
<% end %>
你的模特:
class Gallery < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :gallery
end
答案 1 :(得分:0)
听起来你不需要嵌套表格。我会完全放弃accepts_nested_attributes_for。
工作流程应该是: 1)选择一个画廊 2)上传并描述照片
您可以使用单独的控制器/视图来管理图库。
一旦你完成了并验证了你的架构,上面的例子应该可以工作(集合选择直接绑在Photo上的画廊)
答案 2 :(得分:0)
@Raphael:
添加后,列名称应为 gallery_id (型号名称+ ID)
在ruby控制台中尝试以下行
photos = Photo.find_all_by_gallery_id(Gallery.first)
这应该会为您提供第一个图库中所有照片的列表。