参数缺失或值为空:ph - rails
param is missing or the value is empty: 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
我可能遗漏了什么。感谢您的协助,提前致谢。
将您的 new
操作修改为
def new
@ph = Ph.new
end
您收到错误的原因是因为当您访问路由 phs/new
时,params
散列中没有密钥 ph
传递给控制器,但您试图访问 params[:ph][:amount]
,这是 ph_params
的 return 值。这就是错误 'param is missing or the value is empty' 发生的原因。
如果您想知道每个请求在 params
中传递了哪些值,请将以下行添加到您的 application.html.erb
<%= params.inspect %>
您可能会在 new
页面中找到包含两个键 {"controller" => "phs", "action" => "new"}
的散列。
但是,当您尝试创建一个新的 ph
对象时,您会在 params
哈希中找到一个键 ph
。
顺便说一句,我觉得你不太明白strong parameters
。我建议你阅读 http://api.rubyonrails.org/classes/ActionController/StrongParameters.html
这可能是重复的,但我已经阅读并尝试了几乎所有的建议,但我总是在新操作视图中收到错误消息。我正在使用 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
我可能遗漏了什么。感谢您的协助,提前致谢。
将您的 new
操作修改为
def new
@ph = Ph.new
end
您收到错误的原因是因为当您访问路由 phs/new
时,params
散列中没有密钥 ph
传递给控制器,但您试图访问 params[:ph][:amount]
,这是 ph_params
的 return 值。这就是错误 'param is missing or the value is empty' 发生的原因。
如果您想知道每个请求在 params
中传递了哪些值,请将以下行添加到您的 application.html.erb
<%= params.inspect %>
您可能会在 new
页面中找到包含两个键 {"controller" => "phs", "action" => "new"}
的散列。
但是,当您尝试创建一个新的 ph
对象时,您会在 params
哈希中找到一个键 ph
。
顺便说一句,我觉得你不太明白strong parameters
。我建议你阅读 http://api.rubyonrails.org/classes/ActionController/StrongParameters.html