"articles", :id=>nil} 缺少必需的键:[:id] 以下是显示错误的代码。 这是什么错-6ren">
gpt4 book ai didi

ruby-on-rails - 文章中的 ActionController::UrlGenerationError#edit

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:58 25 4
gpt4 key购买 nike

我收到以下错误:

没有路由匹配 {:action=>"show", :controller=>"articles", :id=>nil} 缺少必需的键:[:id]

以下是显示错误的代码。

<%= form_for :article, url: article_path(@article), method: :patch do |f| %>

这是什么错误,每当我从上一个屏幕点击编辑时,我想我正在发送文章 ID。

这是我的 rake 路由输出

     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

最佳答案

如果你看看你的问题

<%= form_for :article, url: article_path(@article), method: :patch do |f| %>

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

修复

显示一篇文章:

如果您想显示一篇文章,那么请使用默认使用 get 请求的 link_to 而不是 form_forform_for 用于创建文章而不是用于显示文章强>

<%= link_to "Article", articles_path(@article) %>

创建或编辑文章:

一个。 使用多态 url

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

<%= form_for @article do |f| %>
// your fields
<% end %>

为了让它工作,你需要在你的 Controller 中有这个

def new
@article = Article.new
end

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

使用 path_helpers

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

用于创建:

<%= form_for :article, url: article_path do |f| %>
// your fields
<% end %>

用于编辑:

<%= form_for :article, url: article_path(@article) do |f| %>
// your fields
<% end %>

关于ruby-on-rails - 文章中的 ActionController::UrlGenerationError#edit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24796104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com