🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Q&A

1回答

755閲覧

rails The action 'create' could not be found for PostsControllerエラー

yupapapa

総合スコア24

Ruby on Rails

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

0グッド

0クリップ

投稿2019/10/22 03:10

railsで投稿機能を作成しており、いざ投稿しようとすると、タイトルのようなエラーが発生してしまいます。
エラーの発生ファイルや行などの情報はなく、このエラーだけが表示されるので、どこが原因なのかわからず、詰まっています。ご教授願います。

posts.controller.rb

1class PostsController < ApplicationController 2 before_action :authenticate_user 3 bedore_action :ensure_correct_user, {only: [:edit, :update, :destroy]} 4 5 def index 6 @posts = Post.all.order(created_at: :desc) 7 end 8 9 def show 10 @post = Post.find_by(id: params[:id]) 11 @user = @post.user 12 end 13 14 def new 15 @post = Post.new 16 end 17 18 def create 19 @post = Post.new(post_params) 20 @post.user_id = @current_user.id 21 @post.save 22 redirect_to("/") 23 end 24 25 def destroy 26 @post = Post.find_by(id: params[:id]) 27 @post.destroy 28 flash[:notice] = "削除...しちゃったよ" 29 redirect_to("/") 30 end 31 32 def ensure_correct_user 33 @post = Post.find_by(id: params[:id]) 34 if @post.user_id != @current_user.id 35 flash[:notice] = "権限がありません" 36 redirect_to("/") 37 end 38 end 39 40 private 41 def post_params 42 params.require(:post).permit(:content, :image) 43 end 44 45end

newhtmlerb

1<% @post = Post.new unless @post %> 2 3<div class="main posts-new"> 4 <div class="container"> 5 <h1 class="form-heading">投稿する</h1> 6 7 <div class="box2"> 8 <p>投稿本文の内容は、140文字までです。<br>本文が空の状態での投稿はできません。</p> 9</div> 10 11 12<%= form_for @post,:url => {:action => :create} do |f| %> 13 14<div class="form"> 15 <div class="form-body"> 16 <p>募集内容(最大140文字)</p> 17<%= f.text_area :content, class: "js-text" %> 18<p class="js-text-count"></p> 19 20<%= f.file_field :image %> 21<%= f.submit "投稿する" %> 22</div> 23 </div> 24<% end %> 25</div> 26</div>

showhtmlerb

1<div class="main posts-show"> 2 <div class="container"> 3 <div class="posts-show-item"> 4 <div class="post-user-name"> 5 <img src="<%= "/user_images/#{@user.image_name}" %>"> 6 <%= link_to(@user.name, "/users/#{@user.id}") %> 7 </div> 8 <p> 9 <%= @post.content %> 10 </p> 11 <div class="show-img"> 12 <% if @post.image? %> 13 <%= image_tag @post.image.url, :class=>"img" %> 14 <% end %> 15 </div> 16 <div class="post-time"> 17 <%= @post.created_at %> 18 </div> 19 <% if @post.user_id == @current_user.id %> 20 <div class="post-menus"> 21 <%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %> 22 </div> 23 <% end %> 24 </div> 25 </div> 26 </div>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

正直言って原因はわからないのですが、同じエラーに遭遇した人の解決策を見たところ、構文エラーの可能性が高そうです

他の人

そのため、構文エラーを探してみたのですが、私では力不足で、1か所しか怪しいところを見つけられませんでした。
ひとまず、ここを治してみてはいかがでしょうか?

ruby

1# onlyの外に{}はいらない 2bedore_action :ensure_correct_user, {only: [:edit, :update, :destroy]} 3 4# これでよい 5bedore_action :ensure_correct_user, only: [:edit, :update, :destroy]

投稿2019/10/22 04:37

編集2019/10/22 04:38
siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問