2017-10-29 14 views
1

このような質問がたくさんあることは知っていますが、誰も私の質問に答えずに自分の問題を解決しました。だから、私はこの問題に約1週間苦しんでおり、解決できません!私は本当にレール上でルビーの新しいですが、私はすべてを試してみました。私はこれを持っています(ActionController :: ParameterMissing: paramが見つからないか、値が空です:意見)と私はそれを修正する方法を知らない。 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> 

お願いします。私はそれを解決することができないので、私は狂っている!感謝:)インスタンス変数@opinion

答えて

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。それはあなたのケースは params.fetch(:opinion, {}).permit(:body)

0

また、この問題が発生する可能性があり、私は右def create@opinion = Opinion.new(opi_params)pryまたはbyebugのようなデバッガをドロップすると、お勧めしますparamsが届いているのを確認してください。opinionが見つからない可能性があります。これにより、ParameterMissingエラーが発生します。

また、ブラウザまたはテストを通じてこのエラーが発生していますか?あなたのテストからこのエラーが発生している場合は、あなたのセットアップかもしれません。

あなたのopi_paramsメソッドでは、その間にparams.permit(:body)を試してください。

0

に強いパラメータを変更している場合、フォームが空のフィールドbodyとともに提出されたときに

関連する問題