Rails 5 教程入门,没有路由匹配 [POST] “/articles/new”,
Getting Started with Rails 5 tutorial, No route matches [POST] "/articles/new",
我正在学习本教程:Rails http://guides.rubyonrails.org/getting_started.html
入门
我在堆栈上搜索:没有路由匹配 [POST] “/articles/new” No route matches [POST] "/articles/new" 并且建议的拼写更正对我的错误没有帮助。
你可以找到我的 git: https://github.com/tomile/rails5Blog/tree/adding-partial.
routes.rb
Rails.application.routes.draw do
resources :articles
get 'welcome/index'
root 'welcome#index'
end
articles_controller.rb
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
_form.html.erb(没有复制粘贴整个文件)
<%= form_for :article do |f| %>
...
<p>
<%= f.submit %>
</p>
<% end %>
new.html.erb
<h1>New Article</h1>
<%= render 'form' %>
<%= link_to 'Back', articles_path %>
$rake 路线
Prefix Verb URI Pattern Controller#Action
articles GET /articles(.:format) articles#index
POST /articles(.:format) articles#create
new_article GET /articles/new(.:format) articles#new
POST /articles(.:format) articles#create
new_article GET /articles/new(.:format) articles#new
edit_article GET /articles/:id/edit(.:format) articles#edit
article GET /articles/:id(.:format) articles#show
PATCH /articles/:id(.:format) articles#update
PUT /articles/:id(.:format) articles#update
DELETE /articles/:id(.:format) articles#destroy
首先,新路由是 GET 类型的。
第二件事是,当我们使用 form_for 时,我们为其提供了一个实例。
所以在你的文章控制器中
def new
@article = Article.new
end
然后在表格中使用
<%= form_for @article do |f| %>
它将表单动作指向文章的创建方法。
你漏掉了一步教程。
您必须将表格的第一行更改为以下内容:
<%= form_for :article, url: articles_path do |f| %>
之后表格就可以正常工作了。
我正在学习本教程:Rails http://guides.rubyonrails.org/getting_started.html
入门我在堆栈上搜索:没有路由匹配 [POST] “/articles/new” No route matches [POST] "/articles/new" 并且建议的拼写更正对我的错误没有帮助。
你可以找到我的 git: https://github.com/tomile/rails5Blog/tree/adding-partial.
routes.rb
Rails.application.routes.draw do
resources :articles
get 'welcome/index'
root 'welcome#index'
end
articles_controller.rb
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
_form.html.erb(没有复制粘贴整个文件)
<%= form_for :article do |f| %>
...
<p>
<%= f.submit %>
</p>
<% end %>
new.html.erb
<h1>New Article</h1>
<%= render 'form' %>
<%= link_to 'Back', articles_path %>
$rake 路线
Prefix Verb URI Pattern Controller#Action
articles GET /articles(.:format) articles#index
POST /articles(.:format) articles#create
new_article GET /articles/new(.:format) articles#new
POST /articles(.:format) articles#create
new_article GET /articles/new(.:format) articles#new
edit_article GET /articles/:id/edit(.:format) articles#edit
article GET /articles/:id(.:format) articles#show
PATCH /articles/:id(.:format) articles#update
PUT /articles/:id(.:format) articles#update
DELETE /articles/:id(.:format) articles#destroy
首先,新路由是 GET 类型的。 第二件事是,当我们使用 form_for 时,我们为其提供了一个实例。
所以在你的文章控制器中
def new
@article = Article.new
end
然后在表格中使用
<%= form_for @article do |f| %>
它将表单动作指向文章的创建方法。
你漏掉了一步教程。 您必须将表格的第一行更改为以下内容:
<%= form_for :article, url: articles_path do |f| %>
之后表格就可以正常工作了。