我正在尝试在我的Rails应用程序中创建媒体库。
我有两个模型,相册和图像。剥离版本如下:
class Album < ActiveRecord::Base
has_and_belongs_to_many :images
end
class Image < ActiveRecord::Base
has_and_belongs_to_many :albums
mount_uploader :image, ImageUploader
end
由于图像可以属于许多相册,而相册可以有许多图像,我怀疑它们都应该有has_and_belongs_to_many
。有人可以证实这是正确的吗?协会仍然经常困扰我。
对于图库,我正在使用albums#index
页面列出所有相册。页面上的按钮允许用户创建相册并重定向到此相册的#show
方法。那就是我被困住的地方。
从UX的角度来看,我不想强迫用户创建相册,然后转到单独的页面将图像上传到该相册。我希望他们能够在专辑#show页面上传图像。
我有这样的事情:
= simple_form_for [:admin, @album], html: { multipart: true } do |a|
= a.simple_fields_for :images do |i|
= i.input :title
= i.file_field :image
= a.submit
这不起作用。我收到错误消息:Image(#70146236626460) expected, got Array(#70146232389660)
然后我尝试从我的专辑#index view中的ImagesController渲染模板:
= render admin/images/form
我正在使用inherited_resources
gem,所以在我的AlbumController中我做了:
def show
super do
@image = Image.new
end
end
这解决了我得到的第一个错误,但后来它给了我更多错误,我认为这不是正确的方法。
所以.. tl;博士:简单的问题。如何获取表单以上传图片并将其与album#show
页面上的正确相册相关联?