Ruby on rails 尝试使用Rails从列表中删除邮件
因此,我有一个简单的消息列表,用户可以提交。我正在尝试为每条消息设置一个删除按钮(可以正常工作)。但是正如你所看到的,如果你点击按钮,你会得到一个关于完全不同的动作的错误。我不完全确定我错在哪里。我猜我在控制器区域的深度不够。以下是所有适用的文件 Routes.rb:Ruby on rails 尝试使用Rails从列表中删除邮件,ruby-on-rails,model-view-controller,routes,Ruby On Rails,Model View Controller,Routes,因此,我有一个简单的消息列表,用户可以提交。我正在尝试为每条消息设置一个删除按钮(可以正常工作)。但是正如你所看到的,如果你点击按钮,你会得到一个关于完全不同的动作的错误。我不完全确定我错在哪里。我猜我在控制器区域的深度不够。以下是所有适用的文件 Routes.rb: Rails.application.routes.draw do root 'messages#index', as: :home get '/new' => 'messages#new', as: :edit res
Rails.application.routes.draw do
root 'messages#index', as: :home
get '/new' => 'messages#new', as: :edit
resources :messages
post '/new' => 'messages#create', as: :create
delete 'messages/:id' => 'messages#destroy', as: :delete
有关控制人:
class MessagesController < ApplicationController
def index
@messages=Message.all
end
def new
@messages=Message.new
end
def destroy
@messages=Message.find(params[:id])
@messages.destroy
end
def create
@messages = Message.new(message_params)
if @messages.save
redirect_to '/'
else
render 'new'
end
end
private
def message_params
params.require(:message).permit(:content, :subject)
end
end
class messages控制器
有关意见:
<div class="main">
<div="messages">
<%@messages.each do |t|%>
<h2 class="subject"><%=t.subject%></h2>
<p class="content"><%=t.content%></p>
<%=link_to "Delete Message", delete_path(t)%>
<% end %>
<%=link_to "Create Message", edit_path%>
</div>
</div>
您还需要传递方法DELETE
,否则它将执行简单的GET
请求。以下是方法:
<%=link_to "Delete Message", delete_path(t), :method => 'delete' %>
编辑2:
您得到的错误是模板丢失
,因为在销毁
方法中,您既没有渲染
任何内容,也没有重定向到
任何内容。销毁对象后,您必须告诉它应该放在哪里。例如,如果希望用户在销毁记录后转到“所有消息”页面,则需要在方法末尾添加以下行:
redirect_to messages_path
您的链接只是执行HTTP
GET
的普通链接。你需要阅读HTTP方法和Rails.delete'messages/:id'=>'messages#destroy',as::delete将其更改为-get'messages/:id'=>'messages#destroy',将其更改为delete'messages/:id…etcetc不会更改任何内容我这样做了,我现在从外部源收到一个更大的错误。好的,事实上!这是可行的,但当我单击按钮时会出现错误,但是如果我返回并重新加载页面,消息就会消失。您已经编写了参考资料:消息,并且您自己也在生成路由。为什么?<代码>资源:消息
将为您生成所有凝乳路线。好的,但“模板丢失”错误的原因是什么。我得到了错误,但是如果我返回并重新加载,消息就消失了。好吧,我解决了,我必须在销毁操作中附加重定向_到“/”,因为我没有嵌入的ruby模板。但你的答案仍然有效。
redirect_to messages_path