0

我有两个控制器:工人和任务。

这是变量index of the tasks_controller

def index
   @task = Worker.where(:name => params[:worker_id])

   respond_to do |format|
        format.html # show.html.erb
        format.json { render json: @worker }
    end
end

这是我的index.html.erb of Tasks

<table>
  <% @task.each do |task| %>
    <tr>
      <td><%= task.name %></td>
      <td><%= task.task %></td>
      <td><%= task.done %></td>
      <td><%= link_to 'Edit', edit_worker_task_path(task.name,1) %></td>
    </tr>
  <% end %>
</table>

我必须知道任务的 id 是什么(例如,我设置了“1”)。

在此处输入图像描述

我附上我的rake routes命令:

在此处输入图像描述

这是我的edit of the task(我只是想看看我是否得到相关任务):

<table>
    <% @task.each do |task| %>
    <tr>
        <td><%= task.name %></td>
        <td><%= task.task %></td>
        <td><%= task.done %></td>
    </tr>
    <% end %>
</table>

这是我的models/worker.rb

class Worker < ActiveRecord::Base
   attr_accessible :done, :name, :task
end
4

3 回答 3

1

也许你应该做类似的事情

edit_worker_task_path(task, @task)

在阅读您的源代码时,我注意到您有一些奇怪的命名(@task = Worker.where)?

于 2012-12-23T21:37:01.113 回答
1

要链接到特定任务的编辑页面,只需这样做:

<%= link_to 'Edit', edit_worker_task_path(task) %>

如果这是一个嵌套路由,您可能希望确保有一个 edit_task 路由,以便您可以这样做:

<%= link_to 'Edit', edit_task_path(task) %>

但是由于您的 @task 变量实际上是 Worker 模型的集合,因此如果您调用了 edit_task_path(task) 助手,那么您最终会进入编辑任务页面,但它会通过 Worker 的 id。那有意义吗?

编辑 经过一番交谈,我们创建了必要的 Task 和 Worker 模型,整理了 migrations 和 routes.rb 文件。然后指着他new_worker_task_path(worker)看了一下工人索引页。

于 2012-12-23T21:40:56.993 回答
1

您的 link_to 应该像这样使用帮助程序:

<%= link_to 'Edit', edit_worker_task_path(id: task.id) %>

另外,我建议您使用 I18n 来本地化您的应用程序。即使你只使用一种语言,也许有一天你会需要第二种(或几种)其他语言。到目前为止,您只能翻译一种语言。

您的 @task 变量应该设置如下(这很奇怪,因为您调用了变量 task 但您调用了 Worker 模型......):

@tasks = Task.where(worker_id: params[:worker_id])
于 2012-12-23T21:57:06.770 回答