没有路线匹配[POST]“/ articles / new” - 为什么?

时间:2017-06-02 11:30:31

标签: ruby-on-rails

我做了以下介绍: http://guides.rubyonrails.org/getting_started.html

之后,我想创建一个新字段(如标题)并收到错误通知:

这是我的代码:

的routes.rb

Rails.application.routes.draw do
  get 'welcome/index'

  resources :articles do
    resources :comments
    resources :description
    root 'welcome#index'

    # For details on the DSL available within this file, see guides.rubyonrails.org/routing.html
  end
end

我知道这个问题已被提出很多,但他们的解决方案对我没有帮助。

我该怎么办?

此致

3 个答案:

答案 0 :(得分:0)

默认情况下,rails新资源路由的动词为GET,而不是POST。除非你另有说明。

答案 1 :(得分:0)

好像您正在使用

形式的new_article_patharticles/new
<%= form_for :article, url: new_articles_path do |f| %>

将其更改为

<%= form_for :article, url: articles_path do |f| %>

答案 2 :(得分:0)

问题出在您的new.html.erb表单中,您缺少url: articles_path,如果您未指定,则表单将发送到同一操作(即new)。因此,由于提交表单使用POST(默认情况下)方法,因此您将获得:

  

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

您需要更改form_for并指定url,如下所示:

<%= form_for :article, url: articles_path do |f| %>

来自您提供的same link

  

但这种形式存在一个问题。如果您检查HTML   通过查看页面来源生成的,您将看到   表单的action属性指向/ articles / new 1 。   这是一个问题,因为这条路线会转到您所在的页面   此时此刻,该路线应仅用于展示   新文章的形式。

1 我的重点