質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

解決済

NameError in PostsController#createのエラーを解消したい

tetsuya7724
tetsuya7724

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0評価

0クリップ

64閲覧

投稿2020/04/20 05:03

前提・実現したいこと

rails 6で作成しているのですが、このようなエラーが発生しています。

発生している問題・エラーメッセージ

NameError in PostsController#create undefined local variable or method `post_params' for #<PostsController:0x00007ff65730ff48> Did you mean? post_path

イメージ説明

該当のソースコード

Ruby

#controller class PostsController < ApplicationController before_action :authenticate_user before_action :ensure_correct_user, {only: [:edit, :update, :destroy]} # GET /posts # GET /posts.json def index @posts = Post.all.order(created_at: :desc) end # GET /posts/1 # GET /posts/1.json def show @post = Post.find_by(id: params[:id]) @user = @post.user end # GET /posts/new def new @post = Post.new end # GET /posts/1/edit def edit @post = Post.find_by(id: params[:id]) end # POST /posts # POST /posts.json def create @post = Post.new(post_params) respond_to do |format| if @post.save format.html { redirect_to @post, notice: '投稿しました。' } format.json { render :show, status: :created, location: @post } else format.html { render :new } format.json { render json: @post.errors, status: :unprocessable_entity } end end end # PATCH/PUT /posts/1 # PATCH/PUT /posts/1.json def update respond_to do |format| if @post.update(post_params) format.html { redirect_to @post, notice: '投稿を更新しました。' } format.json { render :show, status: :ok, location: @post } else format.html { render :edit } format.json { render json: @post.errors, status: :unprocessable_entity } end end end # DELETE /posts/1 # DELETE /posts/1.json def destroy @post.destroy respond_to do |format| format.html { redirect_to posts_url, notice: '投稿を削除しました。' } format.json { head :no_content } end end #private # Use callbacks to share common setup or constraints between actions. #def set_post # @user = User.find(params[:id]) #end # Only allow a list of trusted parameters through. #def post_params # params.require(:post).permit(:title, :body, :image,) #end def ensure_correct_user @post = Post.find_by(id: params[:id]) if @post.user_id != @current_user.id flash[:notice] = "権限がありません" redirect_to("/posts/index") end end end

Ruby

/*views*/ <%= form_with(model: post, local: true) do |form| %> <% if post.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2> <ul> <% post.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :タイトル %> <%= form.text_field :title %> </div> <div class="field"> <%= form.label :内容 %> <%= form.text_area :body %> </div> <div class="field"> <%= form.label :画像 %> <%= form.file_field :image %> </div> <div class="actions"> <%= form.submit value="投稿"%> </div> <% end %>

Ruby

#routes Rails.application.routes.draw do resources :posts # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html get "signup" => "users#new" post "login" => "users#login" post "logout" => "users#logout" get "login" => "users#login_form" root 'posts#index' end

補足情報(FW/ツールのバージョンなど)

macOS Catalina 10.15.4
rails 6.0.2.2
Ruby 2.6.3p62

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。