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
Do you have
map.resources :tasks
in your routes?
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.
请在View中检查你的文件名..它应该有扩展名.html.erb
不仅.erb
...
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.
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!
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.