Как Badheka сказал: «почему вы запрашивая и просто спасение @food_item
В любом случае, уведомление что, когда вы пытаетесь создать food_images, вы сделали:
food_item_params[:food_image]['avatar'].each do |a|
@food_image = @food_item.food_images.create!(:avatar=>a)
end
Вы прошли через avatar
в food_image
атрибуты food_item_params
Однако, если вы проверяете food_item_params
, у вас есть:
def food_item_params
params.require(:food_items).permit(food_images_attributes: [:id, :food_item_id, :avatar])
end
С этим, по всей возможности, структура данных, что Params ожидает будет что-то вроде:
{
food_items:
{
food_images_attributes:
{
id: "",
food_item_id: "",
avatar: ""
}
}
}
а то, что возвращается ваш food_item_params
будет следующим:
{
food_images_attributes:
{
id: "",
food_item_id: "",
avatar: ""
}
}
Есть целый ряд вопросов с этим:
1) Ошибка вы получаете: param is missing or the value is empty: food_items
это говорит о том, что пары, что приходит в не в формате, указанном выше. родительский атрибут food_items
отсутствует, так что это первая часть вашего кода, которую необходимо исправить изнутри, где вы отправляете аватар, или совместите свой метод food_item_params
с тем, чтобы соответствовать структуре того, что входит в параметры.
2) Существует не food_item_params[:food_image]['avatar']
, чтобы зациклиться, так как в ваших параметрах нет food_image
. У вас есть food_image_attributes
, поэтому ваша петля будет на food_item_params[:food_image_attributes][:avatar]
3) Цикл через food_item_params[:food_image_attributes][:avatar]
предполагает, что это массив. Если да, то то, как вы это допускаете, неверно. Вы должны указать, что это массив из внутри метода food_item_params
как следующие:
def food_item_params
params.require(:food_items).permit(food_images_attributes: [:id, :food_item_id, avatar: []])
end
Если же, как я подозреваю, что приходит через пары выглядят следующим образом:
food_images_attributes:
{
id: "",
food_item_id: "",
avatar: []
}
Тогда ваш метод food_item_params
должен выглядеть следующим образом:
def food_item_params
params.require(:food_images_attributes).permit(:id, :food_item_id, avatar: [])
end
Я советую вам проверить Params и вставить то, что он выглядит как здесь.
И как последнее слово, проверьте, что вы отправляете из представления, и соответствующим образом установите ваш контроллер или проверьте, что вы хотите, чтобы контроллер ожидал, и отправьте его с точки зрения.
Почему вы сохраняете, ничего не меняя? вы только что спросили его, найдя. –
@AmitBadhekaPykihStaff этот метод отображает форму для загрузки пользователем изображения, если пользователь нажимает кнопку «Сохранить», то изображение будет сохранено в базе данных. Я определил в show.html.haml, чтобы представить изображение на веб-странице. –
напишите ваше мнение и ваши «рейк-маршруты», пожалуйста, – dthal