ActionController :: ParameterMissing:缺少param或值为空:

时间:2017-10-29 03:27:32

标签: ruby-on-rails ruby actioncontroller

所以我知道有很多这样的问题,但没有人回答我的问题并解决了我的问题。所以,我有这个问题大约一个星期,我无法解决它!我对铁轨上的红宝石很新,但我尝试了一切。我有这个(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

请帮助我!我变得疯狂,因为我无法解决它!谢谢:))

3 个答案:

答案 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)

我建议在prybyebug之间删除def create@opinion = Opinion.new(opi_params)之类的调试器,并查看params即将发生的事情。您可能会遗漏{ {1}},会触发opinion错误。

另外,您是通过浏览器还是通过测试得到此错误?如果您从测试中收到此错误,则可能是您的设置。

在此期间,请在ParameterMissing方法中尝试params.permit(:body)