Проблема с файлом загружает во вложенной форме с помощью Rails3 с Mongoid и Carrierwave

У меня есть проблема при передаче направляющих SQLlite 3 приложения к направляющие Mongoid 3 приложения. В версии SQLlite я легко могу включать форму загрузки изображения (использующий Скрепку) из одной модели ('изображение') во вложенной форме из другой модели ('продукт'). Вот моя 'новая' форма продукта:

  <%= form_for @product, :html => {:multipart => true} do |f| %>
     <% f.fields_for :images do |image_form| %>
       <%= f.label :productphoto %>
       <%= f.file_field :productphoto %><br />
    <% end %>
 <% end %>

И вот 'выставочное' представление:

    <% @product.images.each do |image| %>
      <%= image_tag image.productphoto.url(:gallerythumb) %><br />
    <% end %>

Когда я пытаюсь использовать те же обзоры продукта в своих направляющих Mongoid 3 приложения (использующий Carrierwave), я получаю следующую ошибку:

    TypeError in Stores#show: 
    can't convert nil into String
    <%= image_tag product.image.url(:gallerythumb) %>

Я вполне уверен, мои модели в версии Mongoid корректны потому что, если я добавляю строку (как 'имя') к моей модели 'изображения' и вложенному множеству, что в форме 'продукта', это работает. Кроме того, я могу загрузить изображение в невложенную образцовую форму.

Любая справка значительно ценилась бы!

1
задан jrs 21 July 2010 в 02:14
поделиться

1 ответ

У меня сама была похожая проблема. Я думаю, проблема не в загрузке изображений, а в том, что Rails не распознает: images как массивы. Если вы посмотрите на исходный код Rails помощника fields_for, вы увидите, что он проверяет наличие метода "_attributes =". Если этого нет, форма будет размещена как обычные поля, а не как массив (params будет «images» вместо «images [0]»)

Вам необходимо добавить следующую строку в вашу модель:

accepts_nested_attributes_for :images
2
ответ дан 2 September 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: