0

我有两个模型Event,并且Photo具有以下关系:

事件

has_many :photos
accepts_nested_attributes_for :photos, :allow_destroy => true

照片

belongs_to :event

当我在Event#new控制器中创建它时,我有以下内容

@event = Event.new
@event.photos.build

这是我Event#form在表格中的看法

<%= form_for(@event) do |f| %>
...
  <%= fields_for :photos do |photo| %>
    <%= photo.file_field :picture %>
  <% end %>
<% end %>

现在我想包含第一张照片,因为您可能有不止一组与此相关的照片要显示在Event#index.

我试试这个,但它似乎失败了:

<% @events.each do |event| %>
  <% event.photos.first do |pict| %>
    <%= pict.image... %>
  <% end %>
<% end %>
4

3 回答 3

0

更改<%= fields_for :photos do |photo| %><%= f.fields_for :photos do |photo| %>.

<% event.photos.first do |pict| %>是错误的 - 只需获取第一张图片并尝试访问它(如果它存在):

<% pict = event.photos.first %>
<% if pict %>
code here
<% end %>
于 2013-06-13T05:45:41.190 回答
0

如果表单中有文件字段,您可能需要将 :multipart => true 添加到 form_for 块。这可以解释为什么它不上传。

于 2013-06-13T01:18:26.433 回答
0

我猜它不会做任何事情,因为#first 不需要阻塞。尝试

<%= event.photos.first.image... %>

event.photos.first 返回一个对象,将一个块(例如 do |photo| ... end 部分)传递给一个对象实际上并没有做任何事情。

顺便说一句,如果您包含更多关于“失败”意味着什么的细节,那将会很有帮助。你有堆栈跟踪吗?页面上什么都没有显示?您是否已在控制台中验证您的 Event 对象有一张或多张照片?

于 2013-06-13T03:36:19.350 回答