我试着更清楚地问我的问题,因为我认为人们不理解我:
我申请了:RUBY ON RAILS的TODO LIST。
我想创建类似的东西:
我成功创建了第一部分(Tasks Workers),但只创建了:name,num_of_tasks,num_tasks_left。
现在我要创建:“显示任务”。
当用户按下“任务”链接时,他将直接进入包含所有任务的页面(带有编辑和删除选项)。
例如,如果用户在姓名为“Alon”的人的行中按下“任务”的链接,他将指向一个页面,向他显示第二部分(任务的Alon)。 / p>为了获得此输出,我需要添加什么?同时我有一个tasks_controller。
在我解释另一件事之前,我想让你知道第一部分(Tasks Workers)。有一个变量:名称。在每一行中,我打印变量名称(他传递所有数据库)。
为什么我不能做下一步呢?
1)在tasks_controller中添加一个变量:
def show_tasks
@tasks = Task.where(:name => params[:name])
respond_to do |format|
format.html # index.html.erb
format.json { render json: @tasks }
end
end
2)define:show_tasks.html.erb将显示第二部分(X的任务)
3)通过以下方式在index.html.erb中创建一个链接:
<td><%= link_to 'tasks', show_tasks_path(name) %></td>
然后对于每一行,'name'变量将发送到show_tasks.html.erb。
感谢您的帮助!
答案 0 :(得分:1)
您应该使用嵌套资源。 Google可以帮助您查找有关它的文档。 (或点击此处:http://guides.rubyonrails.org/routing.html#nested-resources)
基本上,你的情况下你会有2个控制器: TasksController和WorkersController(或TaskWorkersController)
您的routes.rb应包含以下内容:
# routes.rb
resources :workers do
resources :tasks
end
这将生成路径&amp;你需要帮手。参考文档,如果你找不到怎么做,我可以帮助你一点但不应该太难;)
一些提示:
您的show_tasks
操作将成为TasksController的index
操作,如下所示:
@tasks = Task.where(worker_id: params[:id]) # works if your declared Task belongs_to Worker
您显示所有工人(Alon,Dan等)的操作将是WorkersController的index
操作。