게시물을 반복하는 동안 500 내부 서버 오류 (ActiveRecord) 발생

매니저

색인 레이아웃 페이지에서 내 db의 differents 게시물을 반복하는 동안 500 오류가 발생했습니다.

다음은 로그입니다.

Started GET "/posts" for 127.0.0.1 at 2020-07-18 22:23:44 +0200
Processing by PostsController#index as HTML
  Rendering posts/index.html.erb within layouts/application
  Post Load (0.5ms)  SELECT "posts".* FROM "posts"
  ↳ app/views/posts/index.html.erb:14
  Rendered posts/index.html.erb within layouts/application (Duration: 1923.6ms | Allocations: 18335)
Completed 500 Internal Server Error in 7372ms (ActiveRecord: 0.5ms | Allocations: 37272)

컨트롤러는 다음과 같습니다.

class PostsController < ApplicationController
    before_action :find_post, only: %i[show edit update destroy]
    def index
        @posts = Post.all
        respond_to do |format|
         format.html  # index.html.erb
         format.json  { render json: @posts }
        end
    end
  def show; end

  def new
      @post = Post.new(post_params)     
      if @post.save
         redirect_to @post, notice: "The post was created!"
      else 
         render ‘new’
      end 
   end
  
  def create
      @post = Post.new(post_params)     
      if @post.save
          redirect_to @post, notice: "The post was created!"
      else 
          render ‘new’
      end 
  end

  def edit; end

  def update
      if @post.update(post_params)
          redirect_to @post, notice: "Update successful"
      else
          render ‘edit’
      end
  end

 def destroy
     @post.destroy
     redirect_to root_path, notice: "Post destroyed"
 end



private

def post_params
    params.require(:post).permit(:title, :content, :category_id)
end

def find_post
    @post = Post.find(params[:id])        
end
end

내 게시물에 대한 내 db 항목은 다음과 같습니다.

내 게시물

내 인덱스보기 페이지 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
  <head>
    <title>Blog</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
   <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>

  <% @posts.each do |post| %>
     <h1><%= link_to "post.title", post.title %></h1>
     <p><%= post.content %></p>
  <% end %>
  </body>
</html>

내가 루비로 시작하고 있다는 점에 유의하십시오 (개인용).

미리 감사드립니다. 언제든지 질문하거나 필요한 경우 리소스를 요청하세요.

Jamesc

먼저 컨트롤러 코드를 약간 정리해야합니다. Java 배경에서 온 것 같습니다. 제거해야합니다.;

class PostsController < ApplicationController
    before_action :find_post, only: %i[show edit update destroy]
    def index
        @posts = Post.all
        respond_to do |format|
         format.html  # index.html.erb
         format.json  { render json: @posts }
        end
    end

def show
end

def new
  @post = Post.new(post_params)     
  if @post.save
     redirect_to @post, notice: "The post was created!"
  else 
     render 'new'
  end 
end
  
def create
  @post = Post.new(post_params)     
  if @post.save
      redirect_to @post, notice: "The post was created!"
  else 
      render 'new'
  end 
end

def edit
end

def update
  if @post.update(post_params)
      redirect_to @post, notice: "Update successful"
  else
      render 'edit'
  end

  end

  def destroy
     @post.destroy
     redirect_to root_path, notice: "Post destroyed"
  end

private

  def post_params
    params.require(:post).permit(:title, :content, :category_id)
  end

  def find_post
    @post = Post.find(params[:id])        
  end

end

%i이전 작업 구문도 나에게 약간 외계인입니다. 일반적으로 기호를 사용할 것으로 예상합니다.

before_action :find_post, only: [:show :edit :update :destroy]

그러나 주요 문제는

보기 폴더에는 레이아웃 폴더가 있어야합니다. 그 안에 application.html.erb 템플릿이 있어야합니다. doctype, head 및 body 섹션이 거기에 있어야합니다. 이것은 당신의 오류의 원인이 아닙니다.

귀하의 PostsController상속 ApplicationController원하는 경우 사용되는 레이아웃의 이름을 설정하는,이 컨트롤러별로 레이아웃 지시어를 오버라이드 (override) 할 수있다

레이아웃 yield에서 body태그 내부 명령문 이 있어야합니다 . 그러면 렌더링되는 뷰 템플릿의 내용이 마술처럼 표시됩니다. 이것은 머리글과 바닥 글을 렌더링하기에 완벽한 장소이므로 하나의 머리글 뷰 부분과 하나의 바닥 글 뷰 부분 만 있습니다. 모든 페이지에서 렌더링됩니다. 이해가 되길 바랍니다.

따라서 템플릿에는 렌더링되는 뷰에 특정한 코드 만 포함되어야합니다.

  <% @posts.each do |post| %>
     <h1><%= link_to "post.title", post.title %></h1>
     <p><%= post.content %></p>
  <% end %>

오류는 게시물 제목 링크의 오류입니다.

 <h1><%= link_to "post.title", post.title %></h1>

link_to는 첫 번째 매개 변수는 텍스트가 귀하의 경우 어떤 표시 될 텍스트 문자열 값입니다으로 도우미 걸립니다 post.title당신이 경우에 그 사용을 할 fsdfsd되는 게시물의 실제 제목 보여 그 변경해야하므로 post.title를 얻을 수를 필드의 값

그래서 당신은 이제

<h1><%= link_to post.title %></h1>

하지만 실제 포스트 레코드의 쇼 액션이어야한다고 생각하는 링크 URL이 누락되었습니다. 이를 얻으려면 인스턴스 변수를 사용하면 rails가 경로를 추출 할 것입니다.이 경우에는 postobect이므로 결국

<h1><%= link_to post.title, post %></h1>

오, 다른 사람들이 제안한대로 컨트롤러의 render 문에 대한 quiotes를 변경하십시오.

// Edit1 : '새로운'함수에 대한 '따옴표를'따옴표로 변경했습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

500 내부 서버 오류를 발생시키는 Apache 서버

분류에서Dev

xero에서 송장을 만드는 동안 500 내부 서버 오류가 발생합니다.

분류에서Dev

데이터베이스 오류 발생시 오류 메시지 대신 500 내부 서버 오류를 반환하는 Codeigniter

분류에서Dev

슬림 프레임 워크 출력 500을 사용하는 AJAX 게시물 (내부 서버 오류)

분류에서Dev

Jupyer Lab에서 오류 500 : 내부 서버 오류 발생

분류에서Dev

내 웹 사이트에 게시 할 때 내부 서버 오류가 발생하지만 게시물을 삭제할 때 발생하지 않음

분류에서Dev

Ajax에서 500 내부 오류 발생

분류에서Dev

Wordpress : 500 내부 서버 오류, $ wpdb 사용시 발생 가능한 문제

분류에서Dev

mongoDB에 데이터를 저장하는 동안 500 내부 서버 오류

분류에서Dev

Servlet을 호출 할 때 500-내부 서버 오류가 발생합니다.

분류에서Dev

jstl에서 맵을 반복하는 동안 오류가 발생했습니다.

분류에서Dev

AJAX 게시물을 ASP로 보낼 때 500 (내부 서버 오류)

분류에서Dev

500 (내부 서버 오류) GET http : // localhost : 3000 / favicon.ico 500 (내부 서버 오류)이 계속 발생하는 이유는 무엇입니까?

분류에서Dev

Apache에서 ERROR 500 발생 : 로컬 호스트 / 내부 네트워크에서 GET시 내부 서버 오류

분류에서Dev

Choco Install Mongodb에서 내부 서버 오류 500 발생

분류에서Dev

Choco Install Mongodb에서 내부 서버 오류 500 발생

분류에서Dev

내 게시물 요청이 Jersey에서 500 내부 서버 오류를 반환합니다.

분류에서Dev

일부 메시지 내용을 전치하는 동안 AWK 오류 발생

분류에서Dev

PDOStatement :: fetch로 인해 500 내부 서버 오류 발생

분류에서Dev

500 내부 서버 오류가 발생합니까?

분류에서Dev

(AltoRouter) .htaccess 파일로 인해 500 내부 서버 오류 발생

분류에서Dev

TFS2013 : 진단 활동 로그를 놓기 위치에 복사하는 동안 오류가 발생했습니다. 세부 정보 : 내부 서버 오류

분류에서Dev

캔버스를 이미지로 저장하는 PHP에서 500 내부 서버 오류 발생

분류에서Dev

Rest API C #을 사용하고 500 내부 서버 오류가 발생하는 문제를 redmine 서버에 업데이트

분류에서Dev

Docker Centos 내에서 Tomcat 서버를 시작하는 동안 오류가 발생했습니다.

분류에서Dev

내부 조인 테이블에서 항목을 실행하는 동안 오류 발생

분류에서Dev

Amazon Athena에서 중첩 된 JSON을 구문 분석하는 동안 내부 오류 발생

분류에서Dev

동일한 PHP 페이지에 대한 동일한 JavaScript AJAX 호출 중 3 개가 500 (내부 서버 오류)을 발생시킵니다.

분류에서Dev

Shopify 앱을 설치하려는 500 내부 서버 오류

Related 관련 기사

  1. 1

    500 내부 서버 오류를 발생시키는 Apache 서버

  2. 2

    xero에서 송장을 만드는 동안 500 내부 서버 오류가 발생합니다.

  3. 3

    데이터베이스 오류 발생시 오류 메시지 대신 500 내부 서버 오류를 반환하는 Codeigniter

  4. 4

    슬림 프레임 워크 출력 500을 사용하는 AJAX 게시물 (내부 서버 오류)

  5. 5

    Jupyer Lab에서 오류 500 : 내부 서버 오류 발생

  6. 6

    내 웹 사이트에 게시 할 때 내부 서버 오류가 발생하지만 게시물을 삭제할 때 발생하지 않음

  7. 7

    Ajax에서 500 내부 오류 발생

  8. 8

    Wordpress : 500 내부 서버 오류, $ wpdb 사용시 발생 가능한 문제

  9. 9

    mongoDB에 데이터를 저장하는 동안 500 내부 서버 오류

  10. 10

    Servlet을 호출 할 때 500-내부 서버 오류가 발생합니다.

  11. 11

    jstl에서 맵을 반복하는 동안 오류가 발생했습니다.

  12. 12

    AJAX 게시물을 ASP로 보낼 때 500 (내부 서버 오류)

  13. 13

    500 (내부 서버 오류) GET http : // localhost : 3000 / favicon.ico 500 (내부 서버 오류)이 계속 발생하는 이유는 무엇입니까?

  14. 14

    Apache에서 ERROR 500 발생 : 로컬 호스트 / 내부 네트워크에서 GET시 내부 서버 오류

  15. 15

    Choco Install Mongodb에서 내부 서버 오류 500 발생

  16. 16

    Choco Install Mongodb에서 내부 서버 오류 500 발생

  17. 17

    내 게시물 요청이 Jersey에서 500 내부 서버 오류를 반환합니다.

  18. 18

    일부 메시지 내용을 전치하는 동안 AWK 오류 발생

  19. 19

    PDOStatement :: fetch로 인해 500 내부 서버 오류 발생

  20. 20

    500 내부 서버 오류가 발생합니까?

  21. 21

    (AltoRouter) .htaccess 파일로 인해 500 내부 서버 오류 발생

  22. 22

    TFS2013 : 진단 활동 로그를 놓기 위치에 복사하는 동안 오류가 발생했습니다. 세부 정보 : 내부 서버 오류

  23. 23

    캔버스를 이미지로 저장하는 PHP에서 500 내부 서버 오류 발생

  24. 24

    Rest API C #을 사용하고 500 내부 서버 오류가 발생하는 문제를 redmine 서버에 업데이트

  25. 25

    Docker Centos 내에서 Tomcat 서버를 시작하는 동안 오류가 발생했습니다.

  26. 26

    내부 조인 테이블에서 항목을 실행하는 동안 오류 발생

  27. 27

    Amazon Athena에서 중첩 된 JSON을 구문 분석하는 동안 내부 오류 발생

  28. 28

    동일한 PHP 페이지에 대한 동일한 JavaScript AJAX 호출 중 3 개가 500 (내부 서버 오류)을 발생시킵니다.

  29. 29

    Shopify 앱을 설치하려는 500 내부 서버 오류

뜨겁다태그

보관