2017-10-29 48 views
1

所以我知道有很多类似的问题,但没有人回答我的问题并解决了我的问题。所以,我遇到这个问题已经有一个星期了,我无法解决它!我对轨道上的红宝石非常陌生,但我尝试了一切。我有这个(ActionController :: ParameterMissing: 帕拉姆丢失或值是空的:意见),我不知道如何解决它。 There's所有的代码(我是新手,所以它是非常简单):ActionController :: ParameterMissing:param丢失或值为空:

意见控制器:

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 

新:

<h1>Opinions</h1> 

<%= form_for :opinion do |f| %> 
    <%= f.label :body %><br> 
    <%= f.text_field :body %><br> 
    <br> 
    <%= f.submit "Create an option" %> 
<% end %> 

DB:

class CreateOpinions < ActiveRecord::Migration 
    def change 
    create_table :opinions do |t| 
     t.string :body 
    end 
    end 
end 

展:

<h1>Your Opinions:</h1> 
<div> 
    <%= @opinion.body %> 
</div> 

请帮助我!我疯了,因为我解决不了它!谢谢:)

回答

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

0

这个问题时,形式与现场body空提交如果你的情况发生变化的强烈参数 params.fetch(:opinion, {}).permit(:body)

0

我建议删除一个调试器等也可发生prybyebug权和@opinion = Opinion.new(opi_params)之间def create和看到什么params进来。您可能会丢失opinion,这将触发ParameterMissing错误。

此外,你是通过浏览器或通过测试得到这个错误?如果你从测试中得到这个错误,那可能是你的设置。

与此同时,在opi_params方法中尝试params.permit(:body)

相关问题