如何在rails中的Index页面上显示belongs_to模型的名称?

时间:2011-05-22 22:48:32

标签: ruby-on-rails view indexing

我在Rails中有两个模型。任务和状态。我已正确地将关系放在模型中。任务属于状态和状态has_many任务。到目前为止一切都很好。

但是,当在索引页面上显示我的所有任务时(请参阅下面的index.html.erb),我无法正确显示状态字段。

我应该在我的任务控制器中添加什么以及我应该在下面的index.html.erb文件中添加哪些代码?

状态模型中只有一个名称,每个任务在数据库中都有一个外键status_id。状态例如是“打开”和“关闭”。我无法在索引页面上显示所有任务的这些状态。

感谢。

<h1>Listing tasks</h1>

<table>
  <tr>
    <th>Activity</th>
    <th>List</th>
    <th>Context</th>
    <th>Descripton</th>
    <th>Project</th>
    <th>Deadline</th>
    <th>Owner</th>
    <th>Delegated to</th>
    <th>Status</th>
    <th>Estimated hours</th>
    <th>Remaining hours</th>
    <th>Closed on</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @tasks.each do |task| %>
  <tr>
    <td><%= task.activity %></td>
    <td><%= task.list%></td>
    <td><%= task.descripton %></td>
    <td><%= task.project %></td>
    <td><%= task.deadline %></td>
    <td><%= task.owner %></td>
    <td><%= task.delegated_to %></td>
    <td><%= @status.name %></td> ?????????? Here I want to put my status name f.i. "Open" of that task.
    <td><%= task.estimated_hours %></td>
    <td><%= task.remaining_hours %></td>
    <td><%= task.closed_on %></td>
    <td><%= link_to 'Show', task %></td>
    <td><%= link_to 'Edit', edit_task_path(task) %></td>
    <td><%= link_to 'Destroy', task, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Task', new_task_path %>

2 个答案:

答案 0 :(得分:0)

我会猜测,因为像第一个评论者一样,我发现这篇文章非常难以阅读。

因此,如果您有一个任务和状态并且设置正确,那么您只需使用以下命令即可访问状态:

task.status.name

现在,您需要在控制器中包含状态。这可以很容易地完成。

Task.find(:all, :include => :status)

您需要确保在tasks.status_id上为数据库添加索引。

希望这有助于=)

答案 1 :(得分:0)

嗯,你应该能够像以下一样:

<%= task.status.name %>