我正在写一个小Rails CMS,我有点卡在路由错误中。首先,我有一个名为Entry
的基本模型,其他模型继承自该模型。当我尝试编辑现有模型时,它会返回错误
No route matches [PATCH] "/admin/posts/entries"
在我的routes.rb
CMS插件中,我有以下内容:
Multiflora::Engine.routes.draw do
root "dashboard#index"
scope "/:content_class" do
resources :entries
end
end
在测试应用的routes.rb
我有
mount Multiflora::Engine, at: '/admin'
在application_controller.rb
我还调整了一些路线:
def content_entries_path
entries_path(content_class: content_class.tableize)
end
helper_method :content_entries_path
def content_entry_path(entry)
entry_path(entry, content_class: content_class.tableize)
end
helper_method :content_entry_path
def new_content_entry_path
new_entry_path(content_class: content_class.tableize)
end
helper_method :new_content_entry_path
def edit_content_entry_path(entry)
edit_entry_path(entry, content_class: content_class.tableize)
end
helper_method :edit_content_entry_path
在我的show.html.erb
我有这个:
<%= link_to 'Edit', edit_content_entry_path(@entry) %>
当我导航到edit_content_entry_path
时,它会正确显示编辑页面,但是当我尝试保存已编辑的条目时,它会返回上面指出的错误。当我运行rake routes
时,它会返回以下内容:
entries GET /:content_class/entries(.:format) multiflora/entries#index
POST /:content_class/entries(.:format) multiflora/entries#create
new_entry GET /:content_class/entries/new(.:format) multiflora/entries#new
edit_entry GET /:content_class/entries/:id/edit(.:format) multiflora/entries#edit
entry GET /:content_class/entries/:id(.:format) multiflora/entries#show
PATCH /:content_class/entries/:id(.:format) multiflora/entries#update
PUT /:content_class/entries/:id(.:format) multiflora/entries#update
DELETE /:content_class/entries/:id(.:format) multiflora/entries#destroy
答案 0 :(得分:0)
因此,错误发生在我的edit.html.erb
视图中 - 而不是
<%= form_for(@entry, as: :entry, url: content_entry_path(@entry)) do |f| %>
我有
<%= form_for(@entry, as: :entry, url: entries_path do |f| %>
当我重写它时,一切正常!