编辑与rails教程中的帖子与补丁

时间:2015-09-16 12:39:59

标签: ruby-on-rails

我一直在使用rails 4.2.4跟踪this rails tutorial

教程建议我替换像:

这样的表格
<%= form_for :article, url: article_path(@article), method: :patch do |f| %>

使用:

<%= render 'form' %>

以简单的编辑形式。请注意,当我从“文章”转到“阅读”时,我一直在映射。

部分看起来像:

<%= form_for :reading do |f| %>

我的控制器方法是:

  def edit
    @reading = Reading.find(params[:id])
  end

嗯,结果是使用POST的表单,而路由(根据教程)仅为PATCH设置。那么,使用部分渲染,有没有办法指示它使用PATCH?该教程声称它将被推断,但显然这不是一件正在发生的事情。

No route matches [POST] "/readings/1/edit"

Rails.root: /Users/bensonmargulies/haftorah

Application Trace | Framework Trace | Full Trace

路线:

puck% bin/rake routes
      Prefix Verb   URI Pattern                  Controller#Action
  main_index GET    /main/index(.:format)        main#index
    readings GET    /readings(.:format)          readings#index
             POST   /readings(.:format)          readings#create
 new_reading GET    /readings/new(.:format)      readings#new
edit_reading GET    /readings/:id/edit(.:format) readings#edit
     reading GET    /readings/:id(.:format)      readings#show
             PATCH  /readings/:id(.:format)      readings#update
             PUT    /readings/:id(.:format)      readings#update
             DELETE /readings/:id(.:format)      readings#destroy
        root GET    /  

                      main#index

1 个答案:

答案 0 :(得分:2)

当您将POST模型传递给PATCH时,Rails知道使用ActiveRecordform_for。对于新记录,它将使用POST;对于已存在于数据库中的记录,它将使用PATCH

在您的情况下,您将符号传递给表单,而不是实际记录。尝试将其从form_for :reading更改为form_for @reading