Сохранение пустых записей через form_for - неверное количество аргументов
Обновление: Zishe понял это. Правильный код params.require должен быть:
def adventure_params
params.require(:adventure).permit(:story, :choice, :parent_id, :user_id)
end
с круглыми скобками вместо скобок, конечно.
Оригинальный вопрос:
Я делаю форму form_for, которая должна отправлять 4 атрибута в модель Adventure. Приключенческая модель имеет родословную. Я продолжаю получать неправильное количество аргументов (4 для 1) на основе моего метода params.require. Когда я изменяю требования до 1, я вижу, что все атрибуты в моей базе данных пусты. Я знаю, что они в параметрах, но по какой-то причине они не спасаются. Вот мой код:
форма
<div class="form">
<%= form_for @adventure do |f| %>
<%= f.label :choice %>
<%= f.text_area :choice %>
<%= f.label :story %>
<%= f.text_area :story %>
<%= f.label :parent_id %>
<%= f.text_field :parent_id %>
<%= f.submit "Post"%>
<% end %>
</div>
контроллер
class AdventuresController < ApplicationController
before_filter :authenticate_user!
def home
end
def index
end
def new
@parent_id = params[:parent_id]
@adventure = Adventure.new
end
def show
@adventure = Adventure.find(params[:id])
end
def create
@user = current_user
@adventure = current_user.adventures.build(adventure_params)
if @adventure.save
flash[:success] = "Adventure created!"
redirect_to @adventure
else
flash[:error] = "There was an error"
redirect_to adventures_path
end
end
private
def adventure_params
params.require(:adventure).permit[:story, :choice, :parent_id, :user_id]
end
end
модель
class Adventure < ActiveRecord::Base
has_ancestry
belongs_to :user
validates :user_id, presence: true
validates :parent_id, presence: true
end
Я понятия не имею, почему я получаю неправильное количество аргументов, так как атрибуты отображаются в параметрах.
1 ответ
Решение
+ Изменить permit[...]
чтобы:
.permit(:story, :choice, :parent_id, :user_id)