○前提・実現したいこと
Ruby on Railsでチャットアプリを制作しています。
○発生している問題・エラーメッセージ
その中でコメントフォームを表示するページに画面遷移をしたいのですが、
ArgumentError in Toppages#index
Showing /home/ubuntu/environment/englishcommunity/app/views/posts/_posts.html.erb where line #17 raised:
wrong number of arguments (given 4, expected 0..3)
Extracted source (around line #17):
15 <%= link_to "Delete", post, method: :delete, data: { confirm: "You sure?" }, class: 'btn btn-danger btn-sm' %> 16 <% else %> 17 <%= link_to 'Comment', comment_path, {controller: :comment, action: :create}, class: 'btn btn-primary btn-sm' %> 18 <% end %> 19 </div> 20 <div>
Trace of template inclusion: #<ActionView::Template app/views/toppages/index.html.erb locals=[]>
Rails.root: /home/ubuntu/environment/englishcommunity
Application Trace | Framework Trace | Full Trace
app/views/posts/_posts.html.erb:17
app/views/posts/_posts.html.erb:3
app/views/toppages/index.html.erb:12
というエラーが発生しており解決方法がわかりません。
現在実装済みの機能としては、投稿機能、フォロー・アンフォロー機能、ログイン機能等です。
お手数おかけいたしますが、何卒よろしくお願いいたします。
○該当のソースコード
<% if posts.any? %> <ul class="list-unstyled mt-2"> <% posts.each do |post| %> <li class="d-flex"> <img class="rounded me-2 mb-5" src="<%= gravatar_url(post.user, { size: 64 }) %>" alt=""> <div> <div> <%= link_to post.user.name, user_path(post.user), class: "text-decoration-none" %> <span class="text-muted">posted at <%= post.created_at %></span> </div> <div> <p><%= post.content %></p> </div> <div> <% if current_user == post.user %> <%= link_to "Delete", post, method: :delete, data: { confirm: "You sure?" }, class: 'btn btn-danger btn-sm' %> <% else %> <%= link_to 'Comment', comment_path, {controller: :comment, action: :create}, class: 'btn btn-primary btn-sm' %> <% end %> </div> <div> </div> </div> </li> <% end %> </ul> <%== pagy_bootstrap_nav(@pagy) %> <% end %>
<% if logged_in? %> <div class="row"> <aside class="col-sm-4"> <%= form_with(model: @post) do |f| %> <div class="mb-3"> <%= f.text_area :content, class: 'form-control', rows: 5 %> </div> <%= f.submit 'Post', class: 'btn btn-primary w-100' %> <% end %> </aside> <div class="col-sm-8"> <%= render 'posts/posts', posts: @posts %> </div> </div> <% else %> <div class="bg-secondary p-3 p-sm-5 my-4 rounded"> <div class="text-center text-white"> <h1>Welcome to the Global Community</h1> <p> This is a community of people who want to learn a foreign language.<br> Feel free to learn a language by chatting! </p> <%= link_to 'Sign up now!', signup_path, class: 'btn btn-lg btn-primary' %> </div> </div> <% end %>
class CommentsController < ApplicationController before_action :require_user_logged_in def create @post_id = params[:post_id] @comment = current_user.comments.new(comment_params) if @comment.save flash[:success] = 'Posted comment.' redirect_back(fallback_location: root_path) else redirect_back(fallback_location: root_path) end end def destroy @comment.destroy flash[:success] = 'Deleted comment' redirect_back(fallback_location: root_path) end private def comment_params params.permit(:comment_content, :post_id) end end
○試したこと
引数の数が合わない、とのことかと思うのですが、検索してもどこを変えれば引数が合うのかが分からず困っています。お力お貸しいただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー