有人可以解释以下代码示例 “album [photo_attributes] []”是什么意思 我在这里找到了这段代码http://infrastacks.com/?p=57
<div class="photo">
<% fields_for "album[photo_attributes][]", photo do |p| %>
<p>
<%= p.label :Photo %><br />
<%= p.file_field :data, :index => nil %>
<%= link_to_function "delete", "remove_field($(this), ('.photo'))" %>
</p>
<% end %>
</div>
答案 0 :(得分:1)
从字面上看,它是一个告诉rails将所有提交内容组合在一个哈希表中的结构,因此您可以逐个浏览它们。
所以在这种情况下,哈希表'album [] []'被双重索引。通过不为散列中的第二个项目放置显式索引号(由[photo_attributes]之后的开括号和闭括号指示),rails知道加入所有提交的散列名称(专辑)和第一个索引值(照片属性)一起到一个哈希表,其中关联的对象photo_attributes是一个数组。此数组中的每个条目都是一个散列,其值为索引:data。
## From the code on that page
params[:album][:photo_attributes]
#This turns out to be an array of hashes. Each hash has one key/value pair in it. The key is "data" and the value is the file information. Example:
{"data"=>#<File:/var/folders/56/56dUsTxtHaKheeiHSoaE1++++TI/-Tmp-/CGI20081216-17582-14p6wd2-0>}
params[:album][:photo_attributes].each { |p| p[:data] } # this is a loop that would get you the data for each photo submitted.