16271


ユーザーがsubmitして、パラメーターが以下のハッシュの形でコントローラーに届いています。

{"review"=>{"star"=>"3","comment"=>"ok"},"commit"=>"登録","id"=>"1"}

しかし、param is missing or the value is empty: review  
とreviewが空であると怒られます。。  
なぜでしょうか。よろしくお願いいたします。

[code]

    controllers/articles_controller.rb
    
    def show
        @review = Review.new(review_params)
        @review.save
    end
    
    private
    
    def review_params
      params.require(:review).permit(:star, :comment)
    end
    
[/code]


CC BY-SA 3.0
2015-09-04T17:09:51.617
16268
2015-09-04T21:39:19.363
11188
question
ruby-on-rails
Strong Paramaterのエラー


コントローラーのメソッドがshowになっています。  
通常はcreateかupdateを使うはずです。

参考までにscaffoldを使えばたぶんこうなるだろうと思われるコードを載せておきます。

[code]

    def create
      @review = Review.new(review_params)
    
      respond_to do |format|
        if @review.save
          format.html { redirect_to @review, notice: 'Review was successfully created.' }
          format.json { render :show, status: :created, location: @review }
        else
          format.html { render :new }
          format.json { render json: @review.errors, status: :unprocessable_entity }
        end
      end
    end
    
    def update
      respond_to do |format|
        if @review.update(review_params)
          format.html { redirect_to @review, notice: 'Review was successfully updated.' }
          format.json { render :show, status: :ok, location: @review }
        else
          format.html { render :edit }
          format.json { render json: @review.errors, status: :unprocessable_entity }
        end
      end
    end
    
[/code]

## EDIT

> この処理をcreateメソッドをとして利用する場合は、showメソッドにはどう対応させるのがベスト・プラクティスなのでしょうか？

Railsチュートリアルの[10.3.2マイクロポストを作成する](http://railstutorial.jp/chapters/user-
microposts?version=4.0#sec-creating_microposts)が参考になるかと思います。

StaticPagesControllerのhomeをArticlesControllerのshowに、MicropostsControllerのcreateをReviewsControllerのcreateとして考えるとおそらく答えに近くなるはずです。

ただし、この話は最初の質問（Strong Paramaterのエラー）とは別のテーマになってくるので、あまり深入りしないようにします。  
自分でやってみてわからない点があれば、新しい質問を立てる方が良いと思います。


CC BY-SA 3.0
2015-09-04T19:21:15.137
16271
2015-09-04T21:39:19.363
2015-09-04T21:39:19.363
85
85
16268
answer