当我尝试提交表单时,它给了我错误
No route matches [POST] "/articles/new"
这些文件是:new.html.erb
此文件包含带有文本字段和文本区域的表单:
<%= form_for :article, url: articles_path do |f| %>
这里的网址:是匹配创建的post请求
表格标题
<%= f.label :title %><br>
窗体的文本字段
<%= f.text_field :title %></p>
表格标题
<%= f.label :text %><br>
窗体的文本区
<%= f.text_area :text %></p>
<p>
<%= f.submit %>
</p>
<% end %>
路由文件是
Rails.application.routes.draw do
resources :article
end
控制器是具有新方法和创建方法的控制器
每当我提交表单时,它都会给出错误,甚至我使用了URL:articles_path,对于默认的post请求,我也在表单中使用了@articles,但是它给了我同样的错误。我是Rails的新手,所以我尝试了很多方法,但是我找不到解决方案
class ArticlesController < ApplicationController
def new #new method which is a get request
end
def create #create method which is a post request
end
end
每当我提交的形式它给出的错误,甚至我使用的网址:articles_path默认的发布请求。我保留
def create
end
在控制器中
9条答案
按热度按时间gr8qqesn1#
许多使用本教程的人之所以会出现这种情况,是因为他们在修改了form_for帮助器中的url选项后没有重新加载表单。
请确保在尝试提交表单之前重新加载表单的新副本(您需要表单具有最新的表单提交URL)。
rqmkfv5c2#
变更:
致:
这样,它将Map为:
wvt8vs2t3#
我更改了应用程序/视图/文章/new. html. erb从:
<%= form_for :article do |f| %>
致:
<%= form_for :article, url: articles_path do |f| %>
olhwl3o24#
你可以在官方指南上找到答案。
因为这个路由会转到您当前所在的页面,并且该路由应该只用于显示新文章的表单。
编辑app/views/articles/new.html.erb中的form_with行,使其如下所示:
fzwojiic5#
控制器中的操作/方法什么也不做。它应该是这样的:
在视图中:
ee7vknir6#
RedZagogulin
的答案是正确的-这就是您需要在articles
控制器中使用的代码你的问题的线索在这里:
通常,使用正确的路由结构时:
您会发现
new
操作是GET
,而不是POST
,这使我认为您的系统设置不正确(它试图将表单数据发送到articles/new
,而实际上它应该发送到[POST] articles
如果您遵循
RedZagogulin
概述的步骤,它应该可以为您工作vmdwslir7#
我不断遇到这个问题,它归结为一个事实,我有以下代码在我的导航栏:
我换了这个,一切都开始工作:
我对这方面还是新手,所以不同的做事方式有时会让我感到困惑。
zdwk9cvp8#
就你而言,
首先更改
到
x一个一个一个一个x一个一个二个x
在某些情况下,我们需要添加一个Post路由以生成表单的Post Request。只需在路由文件中添加以下行:
pwuypxnk9#
为了让它工作,我需要合并两个答案的说明。首先,我在routes.rb中添加了一个特定的路由来处理对'/articles/new'的POST请求:
然后我不得不将表单的第一行更改为
<%= form_with model: @aricle do |form| %>
: