我一直在使用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
答案 0 :(得分:2)
当您将POST
模型传递给PATCH
时,Rails知道使用ActiveRecord
与form_for
。对于新记录,它将使用POST
;对于已存在于数据库中的记录,它将使用PATCH
。
在您的情况下,您将符号传递给表单,而不是实际记录。尝试将其从form_for :reading
更改为form_for @reading