前提・実現したいこと
railsでいいね機能を作っています。ユーザー登録必要なしの簡易なものですが、エラーにはまってしまいました。
ご教授いただければ幸いです。
発生している問題・エラーメッセージ
No route matches [POST] "/likes/create"
該当のソースコード
ルーティング
Rails.application.routes.draw do root 'static_pages#home' get 'static_pages/home' get '/help', to: 'static_pages#help' get '/about', to: 'static_pages#about' get '/contact', to: 'static_pages#contact' post "/likes/:post_id/create", to: "likes#create" post "/likes/:post_id/destroy", to: "likes#destroy" get "/posts/:id", to: "posts#index" resources :posts do resources :likes, only: [:create, :destroy] end end
モデル
class Like < ApplicationRecord belongs_to :post counter_culture :post validates :post_id, {presence: true} end
class Post < ApplicationRecord validates :content, uniqueness: true, presence: true, length: { maximum: 30 } has_many :likes, dependent: :destroy end
ビュー
/likes/_like.html.erb <% if Like.find_by(post_id: @post.id) %> <%= link_to("/likes/#{@post.id}/destroy", method: :delete) do %> <span class="fa fa-heart like-btn-unlike"></span> <% end %> <% else %> <%= link_to("/likes/#{@post.id}/create", method: :create) do %> <span class="fa fa-heart like-btn"></span> <% end %> <% end %> <!-- 変数@likes_countを表示してください --> <%= @likes_count %>
/posts/index.html.erb <div class="vote-page"> <h1>投票する</h1> <ul class="list-unstyled"> <% @posts.each do |post| %> <li> <%= post.content %> <%= render "likes/like", post: post %> </li> <% end %> </ul> <%= render 'posts/form' %> </div>
コントローラー
class LikesController < ApplicationController def create @like = Like.new(post_id: params[:post_id]) @like.save redirect_to("/posts/#{params[:post_id]}") end def destroy @like = Like.find_by(post_id: params[:post_id]) @like.destroy redirect_to("/posts/#{params[:post_id]}") end end
class PostsController < ApplicationController def new @post = Post.new end def create @posts = Post.all @post = Post.new(post_params) if @post.save flash[:success] = "登録されました" redirect_to posts_url else render "index" end end def index @posts = Post.all @post = Post.new @like = Like.new counts(@post) end private def post_params params.require(:post).permit(:content) end end
補足情報(FW/ツールのバージョンなど)
リンク内容
こちらのサイトを参考にさせてもらいました。というか、ほぼコピペ…
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/24 12:41
退会済みユーザー
2018/11/24 13:32
2018/11/25 07:05
退会済みユーザー
2018/11/25 14:23
2018/11/26 06:58