2013-04-26 46 views
0

我正在为一些练习构建一个简单的待办事项应用程序。我有项目has_many任务和任务belongs_to项目。嵌套的路线和网址在轨道中的点

所以,我可以显示网址/项目/ 1 /任务我嵌套的路线:

的routes.rb

resources :projects do 
    resources :tasks 
end 

在我的项目显示视图我有以下形式:

Add a task: 
<%= form_for [@project, @task] do |f| %> 
    <%= f.label :Task_name %> 
    <%= f.text_field :name, :placeholder => "Task Name" %> 
    <%= f.submit 'Create Task' %> 
<% end %> 

在我的任务控制器我做了以下内容:

def create 
    @project = Project.find(params[:project_id]) 
    @task = @project.tasks.new(params[:task]) 
    if @task.save 
     redirect_to projects_path(@project) 
    else 
     redirect_to projects_path(@project) 
    end 
    end 

似乎对task.save当我重定向和重定向我的项目实例变量传递给http://todoapp.dev/projects.5(5分项目的ID),而不是http://todoapp.dev/projects/5

问题可能在我的控制器与redirect_to方法或可能嵌套的路线?

我对Rails路由有一个基本的了解,但可以使用一些建议。

回答

0

看起来像在我的控制器redirect_to我使用的路径的复数版本。 projects_path(@project)而不是project_path(@project)。

def create 
    @project = Project.find(params[:project_id]) 
    @task = @project.tasks.new(params[:task]) 
    if @task.save 
     redirect_to project_path(@project) 
    else 
     redirect_to project_path(@project) 
    end 
    end 

这结束了工作。