我正在尝试使用rails应用程序中的erb生成表单。我不断得到我的.html.erb文件第3行的NoMethodError。下面是迁移,控制器,模型和.html.erb
错误是"未定义的方法`class_projects_path'"
迁移:
class CreateClassProjects < ActiveRecord::Migration
def change
create_table :class_projects do |t|
t.string :name
t.text :description
t.text :summary
t.text :github
t.text :other_url
t.timestamps
end
end
end
型号:
class ClassProject < ActiveRecord::Base
attr_accessible :description, :github, :name, :other_url, :summary
end
控制器:
class ClassProjectsController < ApplicationController
def new
@class_project = ClassProject.new
end
end
new.html.erb:
<h1>New Class Project</h1>
<%= form_for @class_project do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :description %>
<%= f.text_field :description %>
<%= f.label :summary %>
<%= f.text_field :summary %>
<%= f.label :github %>
<%= f.text_field :github %>
<%= f.label :other_url %>
<%= f.text_field :other_url %>
<% end %>
良好衡量标准:
get 'new_project' => 'class_projects#new', :as => 'new'
感谢您的帮助,inb4学习代码nub,使用搜索功能nub,等等。
答案 0 :(得分:3)
您需要使用以下内容:
#config/routes.rb
resources :class_projects
这意味着您将能够使用以下内容:
#app/controllers/class_projects_controller.rb
class ClassProjectsController < ApplicationController
def new
@class_project = ClassProject.new
end
end
#app/views/class_projects/new.html.erb
<%= form_for @class_project do |f| %>
...
<% end %>
-
<强>路线强>
您遇到的问题是您尚未声明class_projects
个对象的完整路线。 Rails运行resourceful
(object orientated)路由系统,这意味着如果您调用resources
指令,您将获得完整的CRUD路由结构:
这意味着如果您使用诸如form_for
之类的帮助程序(根据您提供的对象构建路径),您将 以设置此CRUD补充路由。
如上所述定义您的路线文件将使您能够有罪不罚地调用form_for
助手(并且没有额外的参数)
答案 1 :(得分:0)
您没有定义资源路由,因此您的表单需要额外的配置
<%= form_for @class_project, url: new_path do |f| %