Reputation: 11810
I am absolutely and totally new to rails, so the answer is probably very simple. Here goes:
My page is generating this error
NoMethodError in Tasks#new Showing app/views/tasks/new.erb where line #3 raised: undefined method `tasks_path' for #
Here is the view:
<% 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 %>
The controller:
class TasksController < ApplicationController
def index
@all_tasks = Task.find(:all, :order => :id)
end
def new
@task = Task.new
end ...(more)
and the model:
I can't see a problem, but like I said, I'm clueless so far. Thanks!
class Task < ActiveRecord::Base
validates_presence_of :description
belongs_to :priority
has_and_belongs_to_many :staff
has_and_belongs_to_many :catagory
end
Upvotes: 4
Views: 19335
Reputation: 1214
Please check your file name in View..
It should have extension .html.erb
not only .erb
...
Upvotes: 1
Reputation: 9590
Regarding this code:
@all_tasks = Task.find(:all, :order => :id)
You don't need to specify order by id because it's the default behavior. So this should suffice.
@all_tasks = Task.find(:all)
And this can be further condensed to the following
@all_tasks = Task.find.all
Furthermore, a rails convention is to name your instance variable @tasks
@tasks = Task.find.all
Have fun with Rails.
Upvotes: 1
Reputation: 11810
Thanks for the answers.
As predicted, as simple problem.
<% form_for(@task) do |f| %>
should be:
<% form_for(:task) do |f| %>
Funny how you always find the answer to a question right after you post it! Thanks again.
Upvotes: 4
Reputation: 16732
Have you generated this example using the scaffold generator? Because if not it might be that you forgot to define the ressource url mapping in the routes.rb:
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,4 +1,6 @@
ActionController::Routing::Routes.draw do |map|
+ map.resources :tasks
+
Don't forget to restart webrick after you've added the route!
Upvotes: 0