プログラミングを始めてまだ二か月の初心者です。
練習がてら、railsでコミュニティ型のQ&Aサイトを作っています。
発生している問題・エラーメッセージ
そこでQ&A一覧画面から、リンク先のQ詳細画面に飛ぶときに
このようなエラーが出てしまい、
リンク先でコミュニティの名前が取得できませんでした。
どうやら、@community = nil になっているのは分かったのですが
なぜ@community = nil になるのか。どうすればエラーを治せるのか
が全くわからなくて困っています・・・。
このエラーを解決するのに
どうか、皆さんのお力を貸していただけると嬉しいです。
よろしくお願いします。
該当のソースコード
app/controllers/ques_controller.rb
class QuesController < ApplicationController before_action :authenticate_user! def index @community= Community.find_by(id: params[:id]) @que= Que.where(community_id: @community.id) end def new @que= Que.new @community= Community.new end def show @community= Community.find_by(id: params[:id]) @que= Que.find_by(id: params[:id]) end def create @user= User.new @que= Que.new( title: params[:title], content: params[:content], user_id: current_user.id, community_id: params[:community_id] ) if @que.save redirect_to("/communities/#{params[:community_id]}/ques/index") else render("ques/new") end end end
app/views/ques/index.html.erb
<h1>悩み一覧</h1> <p><%= link_to("相談してみよう!","/communities/#{@community.id}/ques/new")%></p> <%= render @que %>
app/views/ques/show.html.erb
<h2><%= @community.name %></h2> <h1><%= @que.title %></h1> <h3><%= @que.content %></h3>
config/routes.rb
Rails.application.routes.draw do devise_for :users get "/" => 'communities#index' get "communities/:id/ques/index" => "ques#index" resources :communities do resources :ques post "/ques/create" => "ques#create" post "/ques/new" => "ques#new" end post "communities/create" => "communities#create" post "communities/new" => "communities#new" get "communities/:id/rule" => "communities#rule" get "communities/:id/show" => "communities#show" end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。