尝试使用form_for时未定义的方法* _path

时间:2013-04-06 11:58:46

标签: ruby-on-rails ruby ruby-on-rails-3 form-for

类别控制器:

  def new
    @cat = Category.new
    respond_to do |format|
      format.html
    end
  end

查看:

%p Add new category:
~form_for(@cat) do |f|
  %div.field
    ~f.label :name
    ~f.text_field :name
  %div.field
    ~f.label :description
    ~f.text_area :description
  %div.field
    ~f.submit

路线:

 resources :category 

当我尝试在浏览器中加载category / new时,我得到:

undefined method `categories_path' for #<#<Class:0x10d9c9ee8>:0x10d9b0768>
Extracted source (around line #3):
1: %h1 Category#new
2: %p Add new category:
3: ~form_for(@cat) do |f|
4:   %div.field
5:     ~f.label :name

为什么我的表单没有显示的任何想法? 此外,在我的类别/索引页面上,我想要显示所有类别,在我获得#<Category:0x10d736b40>的类别列表下。我可以以某种方式摆脱它吗?

2 个答案:

答案 0 :(得分:1)

路线应为

resources :categories

resources :category

答案 1 :(得分:0)

评论有点长,所以我添加了以下内容作为答案。

如果您需要单一资源,则需要执行以下操作:

resource :category

哪个generate only 6 routes(无索引):

GET     /category/new   new
POST    /category       create
GET     /category       show
GET     /category/edit  edit
PUT     /category       update
DELETE  /category       destroy

但您的控制器仍然是复数,除非您执行以下操作:

resource :category, controller: :category