如何为 Rails 中的两个模型提出一对多关系的视图 5

How to come up with a view for one to many relation for two models in Rails 5

我正在尝试在 rails 中建立一个模型与另一个模型之间的一对多关系,它在控制台中有效,但我似乎无法在视图中正确实现它,所以我能够为单个事件创建更多图片(下面有更多解释)

Web应用的背景是,一个事件有多个事件图片,多个事件图片属于一个事件。我试图在控制台和示意图中正确设置它,它似乎有效。当我尝试用视图实现它时,我无法让它工作。

    <%= form_with(model: [ @event, @event.event_pictures.build ], local: true) do |form| %>
  <p>
    <%= form.label :answer %><br>
    <%= form.text_field :answer %>
  </p>
  <p>
    <%= form.label :hint %><br>
    <%= form.text_field :hint %>
  </p>
  <p>
    <%= form.label :event_pics %>
    <%= form.file_field :event_pics, multiple: true %>
  </p>
  <p>
    <%= form.submit %>
  </p>
<% end %>

上面的代码是我的表格,这是问题的主要原因。错误如下所示。

undefined method `event_pictures' for nil:NilClass

控制台的东西在 Pastebin 中有效(https://pastebin.com/ESYAfMzE

控制器

def new
    render 'new'
  end
  def create
    @event = Event.find(params[:event_id])
    @event_picture = @event.event_pictures.create(event_picture_params)
    redirect_to event_path(@event_picture)
  end

**创建新图片的按钮,在事件索引中,因此您可以在单击新图片按钮之前查看事件。 **

<%= button_to "new picture", {:controller => :event_picture, :action => 'new', :event_id => event.id},
              :method => :get,
              class: "btn btn-warning" %>

这非常令人沮丧,因为我还研究了使用 fields_for 而不是 form_with 的可能性,并多次检查了我的 schema.rb 和迁移以确保它已正确链接。在这一点上,我真的很感激任何帮助,因为我已经花了几个小时来研究这个问题。

非常感谢。

我明白了,在您的 new 操作中,您需要设置 @event 实例变量:

def new
  @event = Event.find(params[:event_id])
end