我有三种模式:
class Country < ActiveRecord::Base
has_many :regions
has_many :assets, :dependent => :destroy
accepts_nested_attributes_for :assets
end
class Region < ActiveRecord::Base
belongs_to :country
has_many :appartments
has_many :assets, :dependent => :destroy
accepts_nested_attributes_for :assets
end
class Asset < ActiveRecord::Base
belongs_to :region
belongs_to :country
has_attached_file :image,
:styles => {
:thumb=> "100x100>",
:small => "300x300>",
:large => "600x600>"
}
end
有些人可以向我解释区域控制器的编辑和新方法/操作,存储资产(图像)吗?
答案 0 :(得分:1)
以下是如何通过以某种方式构建表单来实现此目的的示例。它应该适用于新操作和更新操作。
<%= form_for @region do |f| %>
<%= f.fields_for :assets, @region.assets.build do |fa| %>
<%= fa.file_field :image %>
<% end %>
<% end %>
这样做首先要为@region实例创建表单。由于您拥有accepts_nested_attributes_for :assets
,因此您可以使用fields_for
方法来处理关联。符号:assets
告诉它要读取哪个关联,但由于您要添加新图像而不使用现有图像,您可以添加第二个参数,该参数是由{{1创建的单个新资产实例}} 方法。
然后最后你可以添加build
来实际上传文件。
如果您以这种方式构建表单,则根本不必更改控制器内的操作代码。
编辑:
以下是file_field
和new
操作如何使视图正常工作:
create