这段代码中的编辑和新操作有哪些?

时间:2011-08-21 13:42:06

标签: ruby-on-rails ruby-on-rails-3

我有三种模式:

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

有些人可以向我解释区域控制器的编辑和新方法/操作,存储资产(图像)吗?

1 个答案:

答案 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_fieldnew操作如何使视图正常工作:

create