如何在Rails 3.2项目中显示名称而不是ID

时间:2013-03-14 11:11:12

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我正在实施一个库,并且有一个类别表。

类别表如下: -

 id serial NOT NULL,
  name character varying(255),
  parent_cat_id integer DEFAULT 0,
  deleted integer NOT NULL DEFAULT 0,
  CONSTRAINT categories_pkey PRIMARY KEY (id)

现在我遇到的问题是我想显示类别的名称而不是引用类别的id。

我的index.html.erb文件如下: -

<table class="table table-striped table-bordered">
  <tr>
    <th>Id</th>
    <th>Name</th>
    <th>Parent Category Id</th>
    <th>Edit</th>
    <th>Delete</th>
  </tr>

<% @categories.each do |c| %>
  <tr>
    <td><%= c.id %>&nbsp;</td>
    <td><%= c.name %>&nbsp;</td>
    <td><%= c.parent_cat_id %>&nbsp;</td>
    <td><%= link_to 'Edit', {:action => 'edit', :id => c.id} %> &nbsp;</td>
    <td><%= link_to 'Delete', {:action => 'delete', :id => c.id},
    :data => { :confirm => "Are you sure you want to delete this value?" } %></td>
    </tr>
  </tr>
<% end %>
</table>

<br />

我有什么方法可以实现这个。

2 个答案:

答案 0 :(得分:2)

您可以在类别模型中添加以下内容

class Category < ActiveRecord::Base
  belongs_to :parent_category, class_name: 'Category', foreign_key: :parent_cat_id
end

然后您可以执行以下操作

<td><%= c.parent_category.name if c.parent_category %>&nbsp;</td>

我添加if只是为了确保如果类别没有父类别则不会引发错误

答案 1 :(得分:-1)

试试这个,

<td><%= c.parent_cat_id.name %>&nbsp;</td>

如果您的模型有关系,它就有效。