如何为 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
我正在尝试在 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