0
,我發現了以下錯誤:的Rails 3.2.1路由錯誤 - 無路由匹配
Routing Error
No route matches {:controller=>"tasks", :action=>"complete", :list_id=>1, :id=>nil}
Try running rake routes for more information on available routes.
這是我在我的routes.rb文件:
resources :lists do
resources :tasks
end
match 'lists/:list_id/tasks/:id/complete' => 'tasks#complete', :as => :complete_task
root :to => 'lists#index'
在我tasks_controller :
attr_accessor :completed
before_filter :find_list
def create
@task = @list.tasks.new(params[:task])
if @task.save
flash[:notice] = "Task created"
redirect_to list_url(@list)
else
flash[:error] = "Could not add task at this time."
redirect_to list_url(@list)
end
end
def complete
@task = @list.tasks.find(params[:id])
@task.completed = true
@task.save
redirect_to list_url(@list)
end
private
def find_list
@list = List.find(params[:list_id])
end
而在show.html.erb(其中發生了錯誤):
<%= button_to "Complete", complete_task_path(@list.id,task.id) %>
有人能告訴我我做錯了什麼嗎?
您尚未正確定義路徑。無論如何,我認爲它應該是complete_task_path(task.id,:list_id => @list.id)。實際上,你甚至可以忽略.id部分,因爲rails非常聰明。 – vise