0

我试图更清楚地问我的问题,因为我认为人们不理解我:

我有一个应用程序:RUBY ON RAILS 中的 TODO LIST。

我想创建类似的东西:

在此处输入图像描述

我成功创建了第一部分(Tasks Workers),但只有:name、num_of_tasks、num_tasks_left。

现在我想创建:“显示任务”。

当用户按下“任务”的链接时,他将直接进入包含所有任务的页面(带有编辑和删除选项)。

例如,如果用户在一个名为“Alon”的人的行中点击“tasks”链接,他将直接进入一个页面,该页面将显示他的第二部分(Tasks Of Alon)。

为了得到这个输出,我应该添加什么?同时我有一个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) 定义:show_tasks.html.erb 将显示第二部分(X 的任务)

3) 通过以下方式在 index.html.erb 中创建一个链接:

<td><%= link_to 'tasks', show_tasks_path(name) %></td>

然后对于每一行,'name' 变量将被发送到 show_tasks.html.erb。

感谢帮助!

4

1 回答 1

1

您应该使用嵌套资源。Google 可以帮助您找到有关它的文档。(或点击这里: http: //guides.rubyonrails.org/routing.html#nested-resources

基本上,您将有 2 个控制器:TasksController 和 WorkersController(或 TaskWorkersController)

您的 routes.rb 应该包含如下内容:

# routes.rb
resources :workers do
  resources :tasks
end

这将生成您需要的路径和助手。请参阅文档,如果您找不到如何操作,我可以为您提供一点帮助,但应该不会太难;)

一些技巧:

您的show_tasks操作将成为indexTasksController 的操作,如下所示:

@tasks = Task.where(worker_id: params[:id]) # works if your declared Task belongs_to Worker

您显示所有工人(Alon、Dan 等)的index操作将是 WorkersController 的操作。

祝你好运!

于 2012-12-22T23:27:41.797 回答