gpt4 book ai didi

ruby-on-rails - Ruby on Rails - 对象的删除和编辑问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:14 26 4
gpt4 key购买 nike

目前,我正在努力创建我的第一个 Rails Web 应用程序。它应该是一个博客(按照教程)。我可以创建新文章,查看它们,但不知何故我的删除和编辑按钮不起作用(显示错误消息)。我搜索了几个小时的解决方案(在这里和其他论坛上)但无法弄清楚所以我恳请你们的帮助! (提前致谢!)。版本:Rails(4.0.0)、Ruby(2.3.3p222)...如果您需要此处未说明的更多内容,请告诉我。

Controller 文件

class EventsController < ApplicationController
include EventsHelper

def index
@events = Event.all
end

def show
@event = Event.find(params[:id])
end

def new
@event = Event.new

end


def create
@event = Event.new(event_params)
@event.save

redirect_to event_path(@event)
end

def destroy
@event = Event.find(params[:id])
@event.destroy
redirect_to events_path
end

def edit
@event = Event.find(params[:id])
end

def update
@event = Event.find(params[:id])
@event.update(event_params)

redirect_to event_path(@event)
end

private
def event_params
params.require(:event).permit(:title, :body)
end
end

show.html.erb(我在这里调用编辑和删除)

<h1><%= @event.title %></h1>
<p><%= @event.body %></p>
<%= link_to "<< Back to Event List", events_path %>

<p> </p>
<br>

<%= link_to "edit", edit_event_path(@event) %>
<%= link_to "delete", event_path(@event), method: :delete, data: { confirm: "Are you sure?" } %>

edit.html.erb

<h1>Edit an Event</h1>

<%= form_for(@event) do |f| %>
<ul>
<% @event.errors.full_messages.each do |error| %>
<li><%= error %></li>
<% end %>
</ul>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>

routes.rb

Events::Application.routes.draw do
root to: 'events#index'
resources :events
end

路由输出:

    Prefix Verb   URI Pattern                Controller#Action
root GET / events#index
events GET /events(.:format) events#index
POST /events(.:format) events#create
new_event GET /events/new(.:format) events#new
edit_event GET /events/:id/edit(.:format) events#edit
event GET /events/:id(.:format) events#show
PATCH /events/:id(.:format) events#update
PUT /events/:id(.:format) events#update
DELETE /events/:id(.:format) events#destroy

错误信息:

After EDIT -> Couldn't find Event with id=edit

After DELETE -> No route matches [DELETE] "/events"

event.rb(在这个位置 -> events/app/models)

class Event < ApplicationRecord
end

`20170513124425_create_events(事件迁移文件)

class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :title
t.text :body

t.timestamps
end
end
end

最佳答案

我刚刚重新创建了您的应用。我必须做几件事才能让它工作。首先,确保运行 rake db:migrate。

  1. 在您的索引操作中,将 @event 更改为 @events

这是因为您试图在索引页上显示所有事件,而不仅仅是单个事件。

  1. 在您的销毁操作中,将您的 redirect_to 调用更改为 redirect_to events_path

目前,当您删除一个事件时,您正在尝试重定向回该事件。由于该事件不再存在,您会收到错误消息。

  1. 在您的 show.html.erb 文件中,将两次出现的 @events 更改为 @event

您将在此页面上只显示一个事件,而不是所有事件。

  1. 将 routes.rb 文件的第一行更改为 Rails.application.routes.draw do

如果您进行了这些更改,您的应用应该可以运行。您还应该将 event_params 方法放在 Controller 的私有(private)部分中。

关于ruby-on-rails - Ruby on Rails - 对象的删除和编辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com