【发布时间】:2019-05-25 15:49:21
【问题描述】:
我正在尝试在 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 和迁移以确保它正确链接。在这一点上,我真的很感激任何帮助,因为我已经花了几个小时研究这个问题。
非常感谢。
【问题讨论】:
-
错误
undefined method event_pictuures...表示@event是nil,这意味着Event.find没有找到与params[:event_id]匹配的事件。检查您的日志以了解params[:event_id]是什么。
标签: ruby-on-rails ruby ruby-on-rails-5 relationship entity-relationship