#ruby-on-rails #ruby
#ruby-на-рельсах #рубиновый
Вопрос:
Итак, я делаю Jumpstarts Blogger tutorial:
http://tutorials.jumpstartlab.com/projects/blogger.html#i1:-form-based-workflow
Я пытаюсь удалить статьи, добавив метод уничтожения в свой контроллер, однако, похоже, возникает проблема с базой данных при фактическом удалении статей. Статьи удаляются при запуске на моем локальном сервере, но, похоже, не из базы данных?
Вот мой article_controller.rb
class ArticlesController < ApplicationController
include ArticlesHelper
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def create
@article = Article.new(article_params)
@article.save
redirect_to article_path(@article)
end
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to article_path
end
end
Мое шоу.html.erb
<h1><%= @article.title %></h1>
<p><%= @article.body %></p>
<%= link_to "<< Back to Articles List", articles_path %>
<%= link_to "delete", article_path(@article) ,
method: :delete ,
data: {confirm: "Really delete the article?"}%>
Статьи.помощник.erb
module ArticlesHelper
def article_params
params.require(:article).permit(:title, :body)
end
end
Я также запустил консоль и выполнил поиск Article.find(1)
, и он находит только индекс до 3.
Я возился с созданием и удалением статей (именно поэтому до индекса 13), и при попытке удалить и статью я получаю эту ошибку:
ActiveRecord::RecordNotFound in ArticlesController#show
Couldn't find Article with 'id'=13
Мы будем очень признательны за любые советы или предложения.
Ответ №1:
В вашем destroy
действии измените перенаправление на articles_path
(множественное число) вместо единственной версии. Единственная версия попытается найти статью, которую вы только что удалили, которая, конечно, больше не существует.
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to articles_path # pluralized the path
end
Комментарии:
1. Вы заслуживаете всего в жизни и даже больше. Это сработало, спасибо.