ошибка возникает из-за того, что вам требуется ключ :dish
в запросе, но вы его не отправляете. давайте посмотрим
в вашем контроллере rails, у вас есть следующее before_action
def dish_params
params.require(:dish).permit(:name, :description, :country_id, :image)
end
здесь вы говорите, что запрос должен иметь ключ с именем di sh, и этот ключ должен быть символом с именем ключа, описанием, contryID и изображением. поэтому запрос должен быть структурирован таким образом
requestobject
dish
name
description
image
contryID
Но в вашем интерфейсе вы не указываете имя ключа dish
в своем запросе, а скорее вы распространяете содержимое своей формы на запрос, поэтому ваш запрос будет таким:
requestobject
name
description
image
contryID
, как вы видите, все значения присутствуют, но из-за того, что before_action
хочет, чтобы они находились внутри объекта с именем dish
, поэтому вы получите сообщение об ошибке
ActionController::ParameterMissing (param is missing or the value is empty: dish):
, как говорится в сообщении об ошибке, ключ di sh не определен в запросе.
Решение в том, что когда вы отправляете свой запрос, кроме распространения данные формы внутри запроса, распределите их внутри имени ключа dish
следующим образом:
async addDish({ commit }, formData){
const request = {
dish: formData
};
const response = await axios.post(URL, request);
commit('newDish', response.data);
},
теперь, как вы видите, у объекта запроса есть ключ с именем dish
, теперь ваш контроллер будет удовлетворен, так как договор теперь выполнен