1

这些是我的模型:

worker.rb:

class Worker < ActiveRecord::Base
  has_many :tasks
  attr_accessible :name
end

task.rb:

class Task < ActiveRecord::Base
  belongs_to :worker
  attr_accessible :done, :name
end

我有:views/workers/index.html.erb所有工作人员的列表,并在每个工作人员附近:“显示任务”。此链接将用户发送到:views/tasks/index.html.erb

在 中tasks_controller,我有:

def index
    @task = Worker.where(:name => params[:worker_id])
    @worker_name = params[:worker_id]
    respond_to do |format|
        format.html # show.html.erb
        format.json { render json: @worker }
    end
end

这是我的: views/tasks/index.html.erb:

<center>Task of <%= @worker_name %></center><br>
<table>
   <% @task.each do |task| %>
      <tr>
        <td><%= task.name %></td>
        <td><%= task.task %></td>
        <td><%= task.done %></td>
      </tr>
    <% end %>
</table>

我想添加<td>每个任务的 id。就像是:

<td><%= task.id %></td>
4

3 回答 3

2

如果我理解正确,我想你想要这样的东西:

控制器.rb

@worker = Worker.find_by_name(params[:worker_id]) # might want to eager load tasks
@tasks  = @worker.tasks
# @worker_name = params[:worker_id] # don't need this anymore
...

视图.html.erb

<center>Task of <%= @worker.name %></center>
<table>
  <% @tasks.each do |task| %>
  <tr>
    <td><%= task.id %></td>
    <td><%= task.name %></td>
...
于 2012-12-24T14:46:45.713 回答
2
1.9.3-p194 :043 > Worker.all.each do |worker|
1.9.3-p194 :044 >   puts "workerID: "+worker.id.to_s
1.9.3-p194 :045?>   worker.tasks.each do |task|
1.9.3-p194 :046 >     puts "taskID: "+task.id.to_s
1.9.3-p194 :047?>   end
1.9.3-p194 :048?> end

控制器:添加 @workers = Worker.all

看法:

<table>
   <% @workers.each do |worker| %>
      <tr>
        <td>Worker:</td>
        <td><%= worker.id %></td>
        <td><%= worker.name %></td>
        <td></td>
      </tr>
     <% worker.tasks.all
       <tr>
          <td><%= task.id %></td>
          <td><%= task.name %></td>
          <td><%= task.task %></td>
          <td><%= task.done %></td>
      </tr>
    <% end %>
</table>
于 2012-12-24T15:38:02.263 回答
1

如果你想在每个任务中显示 id,你有很多方法, - 你可以在迭代时将 count 变量打印出来,然后循环 - 第二个是你可以使用 ruby​​ 方法 each_with_index 如下;

<center>Task of <%= @worker_name %></center><br>
<table>
   <% @task.each_with_index do |task, i| %>
      <tr>
        <td><%= i %></td>
        <td><%= task.name %></td>
        <td><%= task.task %></td>
        <td><%= task.done %></td>
      </tr>
    <% end %>
</table>

我希望它能回答你的问题

于 2012-12-24T14:31:01.120 回答