ActiveModel::ForbiddenAttributesError Ror4
Обновление старого приложения rails до 4.2.10. Я использую Волшебство Gem. Приложение отлично работало в RoR 3.2.8
Строка 45 ---> @user = User.new(params[:user])
Извлеченный источник (около строки № 45):
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
# PUT /users/1
# PUT /users/1.json
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
метод def create
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { render action: "thanks", notice: 'User was
successfully created.' }
format.json { render json: @user, status: :created,
location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status:
:unprocessable_entity }
end
end
end
1 ответ
Решение
В рельсах 4 или позже вам нужно использовать сильный параметр, как показано ниже
def permit_user_params
params.require(:user).permit(:name, :email, :etc)
end
и использовать этот разрешенный параметр как
def create
@user = User.new(permit_user_params)
respond_to do |format|
if @user.save
format.html { render action: "thanks", notice: 'User was
successfully created.' }
format.json { render json: @user, status: :created,
location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status:
:unprocessable_entity }
end
end
end
Надеюсь, это поможет вам.