Я пишу простое приложение todo, в котором проекты и проекты имеют много задач. Я хочу удалить задачу из проекта. Но когда я пытаюсь связать с методом delete, я получаю undefined метод «task_path».Rails delete link Вложенные маршруты
посмотреть код
<ul>
<% @project.tasks.each do |task| %>
<li><%= task.name %></li> <%= link_to "delete", task, :method => :delete %></br>
<% end %>
</ul>
задачи контроллер
def destroy
@project = Project.find(params[:project_id])
@task = @project.tasks.find(params[:id])
@task.destroy
redirect_to @project, :notice => "Task Deleted"
end
routes.rb
resources :projects do
resources :tasks
end
Update: Так что я удалить работать. Но теперь, когда я повторяю каждую задачу, есть дополнительная ссылка на удаление, которая маршрутизируется на http://todoapp.dev/projects/9/tasks и не дает никаких сопоставлений маршрутов [DELETE] "/ projects/9/tasks". Почему добавлена дополнительная ссылка на удаление?
<% @project.tasks.each do |task| %>
<%= task.name %> <%= link_to "delete", [@project, task], :method => :delete %>
<% end %>
Посмотрите [Руководство по Rails: Вложенные ресурсы] (http://guides.rubyonrails.org/routing.html#nested-resources). – Pigueiras
Возможно, вам нужен идентификатор проекта, не могли бы вы опубликовать то, что вы получили после запуска «рейк-маршрутов»? –