Получение "ActiveRecord :: RecordNotFound в PostsController # show" из ниоткуда - PullRequest
0 голосов
/ 29 декабря 2018

Хорошо, поэтому я пытаюсь отобразить index.html, а RoR показывает, что что-то не так с ... def show в posts_controller ... Хорошо?

Итак, index.html.erb

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <% @posts.each do |post| %>
    <div class="post_wrapper">
        <h2 class="title"><%= link_to post.title, post%></h2>
        <p class="date"><%= time_ago_in_words(post.created_at)%></p>
    </div>
    <% end %>
</body>
</html>

posts_controller.rb

class PostsController < ApplicationController
    def index
        @posts = Post.all.order('created_at DESC')
    end

    def new
    end

    def create
        @post = Post.new(post_params)
        @post.save

        redirect_to @post
    end
    def show
        @post = Post.find(params[:id])
    end
    private

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

Я предположил, что это потому, что не было атрибута, такого как ID, поэтому я изменил params[:id] на params[:title] и все еще получил ту же ошибку,

Не могли бы вы объяснить, что не так и что нужно исправить?

Ответы [ 3 ]

0 голосов
/ 29 декабря 2018

Только начинаю, и даже сейчас я обнаружил, что в процессе разработки гем BetterErrors https://github.com/BetterErrors/better_errors дает вам отличный способ отладки ошибок вживую, возможно, вы сможете установить этот гем и попробовать его, он даст вам лучшеестраницы ошибок и возможность видеть различные переменные вживую.

также, похоже, что проблема должна быть в вашем

<%= link_to post.title, post %>

, это определенно должно выглядеть примерно так

<%= link_to(post.title, post_path(post)) %> 

или

<%= link_to post.tilte, post_path(post) %>

Если это не сработает, вам нужно просмотреть маршруты и посмотреть, определен ли у вас маршрут для страницы показа.

0 голосов
/ 29 декабря 2018

Хорошо, так что я забыл об основной вещи.

После добавления get 'posts/index в routes.rb все работает.

0 голосов
/ 29 декабря 2018

Можете ли вы опубликовать полученную ошибку.

Просто дикая догадка, проблема может быть в этой строке

<%= link_to post.title, post%>

Если это так, измените ее на

<%= link_to post.title, post_path(post) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...