所以我知道有很多这样的问题,但没有人回答我的问题并解决了我的问题。所以,我有这个问题大约一个星期,我无法解决它!我对铁轨上的红宝石很新,但我尝试了一切。我有这个(ActionController :: ParameterMissing: param丢失或值为空:意见)我不知道如何解决它。所有的代码(我是新手,所以它很简单):
意见控制者:
array([ 3.497 , 3.0935 , 3.3625 , 3.56425, 3.497 , 4.10225,
2.75725, 3.766 , 2.959 , 3.9005 ])
新:
class OpinionsController < ApplicationController
def new
@opinion = Opinion.new
end
def create
@opinion = Opinion.new(opi_params)
@opinion.save
redirect_to @opinion
end
def show
@opinion = Opinion.find(params[:id])
end
private
def opi_params
params.require(:opinion).permit(:body)
end
end
DB:
<h1>Opinions</h1>
<%= form_for :opinion do |f| %>
<%= f.label :body %><br>
<%= f.text_field :body %><br>
<br>
<%= f.submit "Create an option" %>
<% end %>
显示:
class CreateOpinions < ActiveRecord::Migration
def change
create_table :opinions do |t|
t.string :body
end
end
end
请帮助我!我变得疯狂,因为我无法解决它!谢谢:))
答案 0 :(得分:2)
<h1>Opinions</h1>
<%= form_for @opinion do |f| %>
<%= f.label :body %><br>
<%= f.text_field :body %><br>
<br>
<%= f.submit "Create an option" %>
<% end %>
将:opinion
更改为实例变量@opinion
。
答案 1 :(得分:0)
如果表单在body
字段提交为空,如果您的情况更改为强参数,则也可能会出现此问题
params.fetch(:opinion, {}).permit(:body)
答案 2 :(得分:0)
我建议在pry
和byebug
之间删除def create
或@opinion = Opinion.new(opi_params)
之类的调试器,并查看params
即将发生的事情。您可能会遗漏{ {1}},会触发opinion
错误。
另外,您是通过浏览器还是通过测试得到此错误?如果您从测试中收到此错误,则可能是您的设置。
在此期间,请在ParameterMissing
方法中尝试params.permit(:body)
。