NoMethod Error in Posts#show에 대한 해결 방법(직접 필기)
NoMethodError in Posts#Show 오류
각 사용자의 발언 상세 정보를 표시하려고 시도할 때 이러한 오류가 발생했습니다
RubbyOnRails를 사용한 기고용 제작 ②(화면제작편)
참고로 작업 중의 각 목록은 다음과 같다.
post_controller.rb
# Applicationcontrollerクラスを継承することで、クラスがコントローラと認識される
class PostsController < ApplicationController
def index
# 投稿データを全て取得、またインスタンス変数なのでViewで参照可能
@posts = Post.all
end
#ルーティングの変更後に追加
def new
#Postモデルのオブジェクトを作成
# @postはインスタンス変数でviewで参照可能
@post = Post.new
end
def create
#データはparamsという変数に渡されている
#createはPostモデルのクラスメソッド
Post.create(post_params)
end
private
#paramsから欲しいデータのみ抽出
def post_params
params.require(:post).permit(:name, :title, :content)
end
# findメソッドで、idにひもづくPOSTオブジェクトを取得する
def show
@post = Post.find(params[:id])
end
end
show.html.erb<div class="d-flex align-items-center mt-4 mb-4">
<div class="ml-auto posts_button">
<a class="btn btn-outline-info" href="/posts" role="button">投稿一覧</a>
<a class="btn btn-outline-info" href="/posts" role="button">編集</a>
</div>
</div>
<div class="card">
<div class="card-header bg-info text-white">
<h4><%= @post.title %></h4>
</div>
<div class="card-body">
<p class="card-text"><%= simple_format(@post.content) %></p>
</div>
<div class="card-footer">
<p class="text-right font-weight-bold mr-10"><%= @post.name %></p>
</div>
</div>
routes.rbRails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
# root -> ルートパス(localhost:3000)でアクセスした場合に割り当てられる設定で、Controllerファイルに記述するindexメソッドを実行するように定義
get 'posts', to: 'posts#index'
#投稿ページを表示
get 'posts/new', to: 'posts#new'
#投稿データの作成
post 'posts', to: 'posts#create'
# 投稿ページ表示(追加)
get 'posts/:id', to: 'posts#show'
end
db/migrate$ rails generate model post name:string title:string content:textを実行すると、dbディレクトリ配下にマイグレーションファイルが作成される
class CreatePosts < ActiveRecord::Migration[5.0]
def change
create_table :posts do |t|
t.string :name
t.string :title
t.text :content
t.timestamps
end
end
end
privte 이전에 기술하는 방법을 통해 해결
해결 방법은 이쪽 사이트 참조↓
All methods defined after private are accessible only internally. Move the show method above private. And make sure you have a file called app/views/posts/show.html.erb and not .rb
방법은 privete 앞에 놔야 돼요!
따라서 privte 이전에 show 방법을 이동했습니다.
posts_contoroller.rb
・
・
・
# findメソッドで、idにひもづくPOSTオブジェクトを取得する
def show
@post = Post.find(params[:id])
end
private
#paramsから欲しいデータのみ抽出
def post_params
params.require(:post).permit(:name, :title, :content)
end
end
투고 상세 페이지가 순조롭게 표시되었다.NoMethodError in Posts#show ;
만약 무슨 잘못이 있으면 저에게 연락 주세요!
Reference
이 문제에 관하여(NoMethod Error in Posts#show에 대한 해결 방법(직접 필기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/_ayk_study/items/d08a0698bce2e9503c62텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)