编辑方法中的路由错误

时间:2016-07-14 14:41:31

标签: ruby-on-rails

我正在写一个小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

1 个答案:

答案 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| %>

当我重写它时,一切正常!