【问题标题】:ActionController::UrlGenerationError in Cpage#newCpage#new 中的 ActionController::UrlGenerationError
【发布时间】:2015-10-30 02:35:11
【问题描述】:

我是 Ruby on Rails 的新手,一直在尝试创建一个简单的表单,但我不断收到此错误

Cpage#new 中的 ActionController::UrlGenerationError

没有路由匹配 {:action=>"show", :controller=>"cpage"} 丢失 所需键:[:id]

这是它所指的行:

<%= form_for :cpage, url: cpage_path do |f| %>

这是我的路线:

Prefix Verb   URI Pattern               Controller#Action
signin_claim GET    /signin/claim(.:format)   signin#claim

cpage_index GET    /cpage(.:format)          cpage#index
POST   /cpage(.:format)          cpage#create

new_cpage GET    /cpage/new(.:format)      cpage#new

edit_cpage GET    /cpage/:id/edit(.:format) cpage#edit
cpage GET    /cpage/:id(.:format)      cpage#show

PATCH  /cpage/:id(.:format)      cpage#update

PUT    /cpage/:id(.:format)      cpage#update

DELETE /cpage/:id(.:format)      cpage#destroy

root GET    /                         signin#claim

这里的格式化很奇怪。有什么建议吗??

【问题讨论】:

    标签: ruby-on-rails ruby forms


    【解决方案1】:

    问题是当你定义表单时,你传入了一个方法cpage_path,它给出了一个错误。如果您进入 Rails 控制台,您可以重现该错误:

    rails c
    > Rails.application.routes.url_helpers.cpage_path
    => ActionController::UrlGenerationError: No route matches ...
    

    如果您查看错误,您应该会看到一个部分,上面写着missing required keys: [:id]。这是重要的部分;您尝试调用需要 id 参数的路由助手,因此调用该助手的有效方法是 cpage_path(123) 等等。

    如果您想要创建新资源的 URL,则可能是 new_cpage_path() 之类的东西(不需要参数)。您可以前往控制台并绑定rake routes 进行确认;路由助手前缀列在最左侧的列中,因此您应该会看到 new_cpage 的条目、cpagecpages 的条目等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 2016-10-30
      • 2015-12-30
      • 2018-05-12
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      相关资源
      最近更新 更多