###知りたいこと
いいね!機能を実装中。いいね!を押すと、"likes/create"に飛ばしたいが、
Routes「No route matches」のエラーが発生します。原因を知りたいです。
参考サイト:https://qiita.com/nojinoji/items/2c66499848d882c31ffa
Routes
1Rails.application.routes.draw do 2 post "likes/:id/create" => "likes#create" ←こちら! 3 get 'users/index' => "users#index" 4 get "signup" => "users#new" 5 post "users/create" => "users#create" 6 get "posts/index" => "posts#index" 7 get "posts/new" => "posts#new" 8 post "posts/create" => "posts#create" 9. 10. 11 12end
→No route matches [GET] "/posts" と、エラー発生
なので、外してRoutesから外すと、
Routes
1Rails.application.routes.draw do 2 get 'users/index' => "users#index" 3 get "signup" => "users#new" 4 post "users/create" => "users#create" 5 get "posts/index" => "posts#index" 6 get "posts/new" => "posts#new" 7 post "posts/create" => "posts#create" 8. 9. 10 11end
→No route matches [POST] "/likes/1/create" と、エラー発生
このようにRoutesがマッチしないというエラーが出てしまいます。
terminal
1$ rails g model like post:references user:references content:string 2$ rails db:migrate
model
1class Likee < ApplicationRecord 2 belongs_to :user 3 belongs_to :post 4end 5class User < ApplicationRecord 6 has_many :posts, dependent: :delete_all 7 has_many :likes 8end 9class Post < ApplicationRecord 10 belongs_to :user 11 has_many :likes 12end
view
1<%= link_to "/likes/#{@post.id}/create", :method => :post, content: "like" do %>いいね!<% end %>
controller
1def create 2 @like = Like.create(user_id: @current_user.id, post_id: params[:id], content: params[:content]) 3 @post = @like.post 4 redirect_to("/posts") 5 end
(通常Likeにcontentは不要かと思いますが、特別な理由で入れています)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 12:59