Приложение Rails добавляет в базу данных только «create_at» и «updated_at» - PullRequest
0 голосов
/ 09 декабря 2018

(с использованием sqlit3)

Мне только что удалось заставить отправку формы работать, однако все поля не отправлены.Только значения Rails по умолчанию "updated_at" и "creation_at" имеют значение.

Код находится в этой записи.

Ответы [ 2 ]

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

Добавьте это к контроллеру рецептов

def recipe_params
 recipe_params = params.require(:recipe).permit(:name,:recipe)
end

этот метод позволяет вам выбрать параметры для добавления

создать действие как обычно

def create
 @recipe = Recipe.create(recipe_params)
 if @recipe.save
    redirect_to recipe_new_path
 else
    reload_page
 end
end

тогда ваша форма должнаПохоже на это, обратите внимание на символ :recipe

<%= form_for :recipe do |f| %>
<%= f.label :name, "Recipe Name:" %>
<%= f.text_field :name %>
<br>
<%= f.label :recipe, "Recipe Description:" %>
<%= f.text_field :recipe %>
<br>
<%= f.submit %>
<% end %>

Обратите внимание, что в вашей форме вместо @ 1013 * у вас был этот @recipe, следовательно, это привело к сообщению об ошибке отсутствующего параметра, просто убедитесь, чтоу вас та же переменная в контроллере и форме.

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

Вам необходимо permit атрибуты, которые могут использоваться контроллером для обновления / создания.В вашем случае вам нужно разрешить поля name и recipe.

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

def recipe_params
    recipe_params = params.require(:recipe).permit(:name,:recipe)
  end

и в ваш create метод, вызовите метод recipe_params вместо прямого использования params[:recipe] для создания .то есть:

 def create
    @recipe = Recipe.create(recipe_params)
    if @recipe.save
        redirect_to recipe_new_path
    else
        reload_page
    end
 end

Это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...