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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

3905閲覧

Rails ネストを複数回した時、link_toでアクションのパスを指定したい

mako19

総合スコア6

Ruby on Rails 5

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/06/22 04:14

編集2020/06/22 05:18

前提・実現したいこと

インスタグラムのようなSNSアプリに
コメント機能といいね機能を追加したい。

ルーティングでは
投稿(Post)に対してコメントルートと、いいねルートをネストしようと考えている。

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

ActionController::UrlGenerationError in Posts#show
が出ている。

###routes.rb resources :posts, only: [:index, :new, :create, :show] do resources :comments, only: [:create] do resources :likes, only: [:create, :destroy] end end
###show.html.haml - if current_user.already_liked?(@post) = link_to post_comment_like_path(@post, @comment), method: :delete, class: 'PostInfo__likes--blackIcon' do = icon('fas', 'heart') %span<> - else = link_to post_comment_likes_path(@post, @comment), class: 'PostInfo__likes--redIcon' do = icon('far', 'heart') %span<>
### $rails routes post_comment_likes POST /posts/:post_id/comments/:comment_id/likes(.:format) likes#create post_comment_like DELETE /posts/:post_id/comments/:comment_id/likes/:id(.:format) likes#destroy
### $user.controller.rb ※ユーザー詳細画面にいいね機能を足すので def show @post = Post.find(params[:id]) @comment = Comment.new @comments = @post.comments.includes(:user) @like = Like.new end

試したこと

コメントに対してのいいねではなく、投稿に対してのいいねを作りたいです。
投稿(Posts)自体にネストしたいのですが、コメント機能を先に作っていたので
投稿のルーティングにはコメントを先にネストしていました。

その場合は、さらに階層を一つ足して、いいねのルーティングをネストするべきなのしょうか。。?

この場合のルーティングの書き方、パスの指定方法わかる方教えていただきたいです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ActionController::UrlGenerationError in Posts#show

こちらは、

erb

1= link_to post_comment_likes_path(@post, @comment), class: 'PostInfo__likes--redIcon'

に method: :post を追加する。

erb

1= link_to post_comment_likes_path(@post, @comment), method: :post, class: 'PostInfo__likes--redIcon'

コメントに対してのいいねではなく、投稿に対してのいいねを作りたい

こちらでいけるのではないでしょうか。

Ruby

1resources :posts, only: [:index, :new, :create, :show] do 2 resources :comments, only: [:create] 3 resources :likes, only: [:create, :destroy] 4end

投稿2020/06/22 14:04

Cojiro

総合スコア539

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

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

mako19

2020/06/23 01:13

methodを追加する、ネストの書き方を変更する、をしたところ解決できました!!! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問