没有路线匹配[POST]"/ articles/new"

10 ruby-on-rails ruby-on-rails-4

当我尝试提交表单时,它给我错误

No route matches [POST] "/articles/new"
Run Code Online (Sandbox Code Playgroud)

文件是:new.html.erb
这个文件包含带有文本字段和文本区域的表单:

<%= form_for :article, url: articles_path do |f| %>
Run Code Online (Sandbox Code Playgroud)

这里的url:匹配作为创建的帖子请求

表格的标题

<%= f.label :title %><br>
Run Code Online (Sandbox Code Playgroud)

表单的文本字段

<%= f.text_field :title %></p>
Run Code Online (Sandbox Code Playgroud)

表格的标题

<%= f.label :text %><br>
Run Code Online (Sandbox Code Playgroud)

表格的文字区域

<%= f.text_area :text %></p>           
<p>
<%= f.submit %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

路线文件是

Rails.application.routes.draw do

resources :article
end
Run Code Online (Sandbox Code Playgroud)

controller是控制器,其方法是新的和创建的

每当我提交表单给出错误时,即使我使用了URL:articles_path,对于默认的帖子请求,我也在表单中使用了@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
Run Code Online (Sandbox Code Playgroud)

每当我提交表单给出错误,即使我使用url:articles_path,默认发布请求.我保持着

def create
end
Run Code Online (Sandbox Code Playgroud)

在控制器中

小智 16

对于使用本教程的许多人来说,这种情况发生的原因是他们在更改form_for帮助器中的url选项后不会重新加载表单.

在尝试提交表单之前,请务必重新加载表单的新副本(您需要表单以获取最新的表单提交URL).


Wal*_*Ali 5

更改:

resources :article
Run Code Online (Sandbox Code Playgroud)

至:

resources :articles #plural
Run Code Online (Sandbox Code Playgroud)

这样它将映射到:

articles_path    POST    /articles(.:format)     articles#create
Run Code Online (Sandbox Code Playgroud)

  • 我改为资源:文章,但它给了我同样的错误 (6认同)