首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionController::Articles#edit中的UrlGenerationError

ActionController::Articles#edit中的UrlGenerationError
EN

Stack Overflow用户
提问于 2014-07-17 06:14:04
回答 1查看 6.4K关注 0票数 9

我得到了以下错误:

没有路由匹配{:action=>“显示”,:controller=>“项目”,:id=>nil}缺少必需的键::id

下面是显示错误的代码。

代码语言:javascript
复制
<%= form_for :article, url: article_path(@article), method: :patch do |f| %>

这是什么错误,每当我点击编辑从上一个屏幕,我认为我发送的文章id。

这是我的耙路输出

代码语言:javascript
复制
     Prefix Verb   URI Pattern                  Controller#Action
welcome_index GET    /welcome/index(.:format)     welcome#index
     articles GET    /articles(.:format)          articles#index
              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
         root GET    /                            welcome#index
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-17 06:41:10

如果你看看你的问题

代码语言:javascript
复制
<%= form_for :article, url: article_path(@article), method: :patch do |f| %>

检查您的url: article_path(@文章),这是文章显示操作的路径助手,如果您检查您的rake路由,它为显示操作显示,您需要一个get请求,但是您正在使用patch方法,或者如果您试图编辑一篇文章,那么您的路径助手是错误的,因此没有路由错误。

Fix

显示一篇文章:

如果您想要显示一篇文章,那么就不用使用默认使用get请求的form_for use link_to,而是使用form_for来创建文章,而不是显示文章

代码语言:javascript
复制
<%= link_to "Article", articles_path(@article) %>

创建或编辑文章的

a.使用多态urls的

如果您想要创建一篇文章或编辑一篇文章,那么您可以使用rails多态url ,并且不需要指定url选项,rails将在内部处理这个问题。因此,要创建和编辑一篇文章,可以使用相同的表单。

代码语言:javascript
复制
<%= form_for @article do |f| %>
  // your fields
<% end %>

要使它工作,您需要在您的控制器中有这个

代码语言:javascript
复制
def new
  @article = Article.new
end

def edit
  @article = Article.find(params[:id])
end

b.使用 path_helpers

如果要在表单中硬编码url选项,那么它将只带您执行该操作,因此需要单独的表单

用于创建:

代码语言:javascript
复制
<%= form_for :article, url: article_path do |f| %>
  // your fields
<% end %>

编辑:

代码语言:javascript
复制
<%= form_for :article, url: article_path(@article) do |f| %>
  // your fields
<% end %>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24796104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档