Как придумать вид для отношения один ко многим для двух моделей в Rails 5 - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь установить отношение один ко многим между одной моделью к другой в рельсах, и это работает в консоли, но я не могу реализовать ее должным образом в представлениях, чтобы иметь возможность создаватьбольше изображений для одного события (более подробно описано ниже)

Фон веб-приложения состоит в том, что у одного события есть много изображений событий, и многие изображения событий принадлежат одному событию.Я пытаюсь настроить это правильно в консоли и схемах, похоже, сработало.Мне не удалось заставить его работать, когда я пытался реализовать его с помощью представлений.

    <%= 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

**Кнопка для создания новой картинки в Event Index, чтобы вы могли увидеть событие, прежде чем нажимать кнопку для новой картинки. **

<%= 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 и миграции, чтобы убедиться, что он правильно связан. На этом этапе я действительно буду признателен за любую помощь, поскольку я ушелчасы, смотрящие на эту проблему.

Большое спасибо.

1 Ответ

0 голосов
/ 27 декабря 2018

Я вижу, в вашем действии new вам нужно установить переменную экземпляра @event:

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