我绝对是全新的rails,所以答案可能非常简单。这是:
我的页面正在生成此错误
NoMethodError in Tasks#new Showing app/views/tasks/new.erb where line #3 raised: undefined method `tasks_path' for #
以下是观点:
<% form_for(@task) do |f| %>
<%= f.error_messages %>
<%= f.label :description %>:
<%= f.text_field :description %><br />
<%= f.label :priority %>:
<%= collection_select(:news, :priority_id, Priority.find(:all), :id, :description) %><br />
<%= f.submit "Add Task" %>
<% end %>
控制器:
class TasksController < ApplicationController
def index
@all_tasks = Task.find(:all, :order => :id)
end
def new
@task = Task.new
end ...(more)
和模型:
我看不出问题,但就像我说的那样,到目前为止我还是一无所知。 谢谢!
class Task < ActiveRecord::Base
validates_presence_of :description
belongs_to :priority
has_and_belongs_to_many :staff
has_and_belongs_to_many :catagory
end
答案 0 :(得分:5)
你有吗
map.resources :tasks
在你的路线?
答案 1 :(得分:4)
感谢您的回答。
正如预测的那样,这是一个简单的问题。
<% form_for(@task) do |f| %>
应该是:
<% form_for(:task) do |f| %>
有趣的是,在发布问题后,您总能找到问题的答案! 再次感谢。
答案 2 :(得分:1)
关于此代码:
@all_tasks = Task.find(:all, :order => :id)
您不需要按ID指定顺序,因为它是默认行为。所以这应该足够了。
@all_tasks = Task.find(:all)
这可以进一步浓缩到以下
@all_tasks = Task.find.all
此外,rails约定是将实例变量命名为@tasks
@tasks = Task.find.all
玩Rails玩得很开心。
答案 3 :(得分:1)
请在View中查看您的文件名..
它不应只有.html.erb
.erb
答案 4 :(得分:0)
您是否使用脚手架生成器生成了此示例?因为如果不是,您可能忘记在routes.rb中定义ressource url映射:
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,4 +1,6 @@
ActionController::Routing::Routes.draw do |map|
+ map.resources :tasks
+
添加路线后别忘了重新启动webrick!