这可能是重复的,但我已阅读并尝试了几乎所有建议,但我不断收到新操作视图的错误。我正在使用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
我可能会遗漏一些东西。非常感谢您的协助,谢谢您。
答案 0 :(得分:1)
将new
操作修改为
def new
@ph = Ph.new
end
您收到错误的原因是因为当您点击路线phs/new
时,ph
哈希中没有任何键params
传递给控制器,但您是&#39 ;重新尝试访问params[:ph][:amount]
,这是ph_params
的返回值。这就是错误&#39; param丢失或值为空的原因&#39;发生。
如果您想知道params
对每个请求传递了哪些值,请将以下行添加到application.html.erb
<%= params.inspect %>
您可能会在{"controller" => "phs", "action" => "new"}
页面中找到包含两个键new
的哈希值。
但是,当您尝试创建新的ph
对象时,您会在ph
哈希中找到密钥params
。
顺便说一句,我觉得你不太了解strong parameters
。我建议你阅读http://api.rubyonrails.org/classes/ActionController/StrongParameters.html