Параметр отсутствует или значение пустое: 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

Другие вопросы по тегам