Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义方法的形式__Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 未定义方法的形式_

Ruby on rails 未定义方法的形式_,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我读了一本名为《Rails 3 in Action》的书,写了两页:“index”和“new”,set routes.rb: root :to => 'projects#index' match '/new', to:'projects#new' 和项目控制员: def new @project = Project.new end def create @project = Project.new(parmas[:project]) @project.save flas

我读了一本名为《Rails 3 in Action》的书,写了两页:“index”和“new”,set routes.rb:

root :to => 'projects#index'
match '/new', to:'projects#new'
和项目控制员:

def new
  @project = Project.new
end

def create
  @project = Project.new(parmas[:project])
  @project.save
  flash[:notice] = "Project has been created"
  redirect_to @project
end
和查看文件:

index.html.erb

<%= link_to "new", new_path %>
这导致:

未定义的方法“projects\u path”#

路在哪里?当我打印
时,我得到
/
,但是
给出了错误未定义的方法


我如何定义一个方法
projects\u path
?Root不是
projects\u path

routes.rb
中删除与“/new”匹配的行,并添加以下内容:

resources :projects

您应该在routes.rb中为项目定义资源

resources :projects

这将生成helper
projects\u路径
和大量的

用于创建新项目的路径是指向“/projects”索引URL的HTTP post。您需要指定此路由:

post "/projects", :controller => "projects", :action => "create", :as => "projects"
这将生成一个
projects\u路径
,这是您的
表单
正在寻找的辅助方法

正如其他人所说,您可能应该使用
resources:projects
。如果只想创建默认创建的项目的子集,可以使用
:only

resources :projects, :only => %w(index new create)

已解决问题,但未定义#在哪里可以定义Formbuilder?@ChangJuPark的方法“label=”。您不必“定义Formbuilder”。您需要使用
。听起来您使用的是
,这是错误的。
resources :projects, :only => %w(index new create)