Параметр отсутствует или значение пустое: ph - rails
Это возможный дубликат, но я прочитал и перепробовал почти все предложения, но продолжаю получать сообщение об ошибке в представлении "Новое действие". Я использую Rails 5.
Я пробовал следующее:
private
def ph_params
params.require(:ph).permit(:amount)
end
А также попробовал следующее, и ошибка исчезла, но мои значения не были сохранены в базе данных, только показывает Nil:
private
def ph_params
params.permit(:amount)
end
Мой контроллер:
class PhsController < ApplicationController
def index
end
def new
@ph = Ph.new(ph_params)
end
def create
@ph = Ph.new(ph_params)
respond_to do |format|
if @ph.save
format.html { redirect_to @ph }
else
format.html { render "new" }
end
end
end
def show
@ph = Ph.find(params[:id])
end
private
def ph_params
params.require(:ph).permit(:amount)
end
end
начало формы new.html.erb
<%= simple_form_for @ph, url: phs_path do |f| %>
модель
class Ph < ApplicationRecord
end
Я мог бы что-то упустить. Ваша помощь приветствуется, спасибо заранее.
1 ответ
Изменить ваш new
действие для
def new
@ph = Ph.new
end
Причина, по которой вы получаете ошибку, заключается в том, что когда вы попадаете на маршрут phs/new
, нет ключа ph
передается в params
хэш к контроллеру, но вы пытаетесь получить доступ params[:ph][:amount]
который является возвращаемым значением ph_params
, Вот почему возникает ошибка "параметр отсутствует или значение пусто".
Если вы хотите знать, какие значения были переданы в params
для каждого запроса, добавьте следующую строку в ваш application.html.erb
<%= params.inspect %>
Вы, вероятно, найдете хеш с двумя ключами {"controller" => "phs", "action" => "new"}
в new
стр.
Тем не менее, когда вы пытаетесь создать новый ph
объект, вы найдете ключ ph
в вашем params
хэш.
Кстати, я думаю, вы не совсем поняли strong parameters
, Я бы предложил вам прочитать http://api.rubyonrails.org/classes/ActionController/StrongParameters.html