Rails显示belongs_to中的类别名称

时间:2011-11-29 21:58:38

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

我想从属于关系中显示一个类别名称而不是一个数字(cat_id),我有汽车和制作,基本上这里是代码 -

show.html.erb

<p id="notice"><%= notice %></p>


<p>
  <b>Make:</b>
  <%= @car.make_id %> 
</p>

<h2>
  <em><%= @car.model %> <%= @car.body_typw %> <%= @car.engine_size %> <%= @car.trim %></em>
</h2>

<p>
  <%= image_tag @car.image(:large) %>
</p>

<% @carimages.each do |carimage| %>

    <%= image_tag carimage.image(:thumb), :class => "imgsmall" %>

<% end %>

<p>
  <b>Transmission:</b>
  <%= @car.transmission %>
</p>

<p>
  <b>Fuel type:</b>
  <%= @car.fuel_type %>
</p>

<p>
  <b>Millage:</b>
  <%= @car.millage %>
</p>

<p>
  <b>Price:</b>
  <%= number_to_currency(@car.price) %>
</p>

<p>
  <%= raw @car.content %>
</p>

所以基本上我想要Make name: -

<p>
  <b>Make:</b>
  <%= @car.make_id %> 
</p>

cars_controller.rb

class CarsController < ApplicationController
  # GET /cars
  # GET /cars.json
  def index
    @cars = Car.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @cars }
    end
  end

  # GET /cars/1
  # GET /cars/1.json
  def show
    @car = Car.find(params[:id])
    @pages = Page.all
    @carimages = Carimage.all
    @carimages = Carimage.find(:all, :limit => 10, :order => "id DESC")
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @car }
    end
  end

  # GET /cars/new
  # GET /cars/new.json
  def new
    @car = Car.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @car }
    end
  end

  # GET /cars/1/edit
  def edit
    @car = Car.find(params[:id])
  end
  # POST /cars
  # POST /cars.json
  def create
    @car = Car.new(params[:car])

    respond_to do |format|
      if @car.save
        format.html { redirect_to @car, notice: 'Car was successfully created.' }
        format.json { render json: @car, status: :created, location: @car }
      else
        format.html { render action: "new" }
        format.json { render json: @car.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /cars/1
  # PUT /cars/1.json
  def update
    @car = Car.find(params[:id])

    respond_to do |format|
      if @car.update_attributes(params[:car])
        format.html { redirect_to @car, notice: 'Car was successfully updated.' }
        format.json { head :ok }
      else
        format.html { render action: "edit" }
        format.json { render json: @car.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /cars/1
  # DELETE /cars/1.json
  def destroy
    @car = Car.find(params[:id])
    @car.destroy

    respond_to do |format|
      format.html { redirect_to cars_url }
      format.json { head :ok }
    end
  end
end

它通过make table-id和car table - make_id

相关联

由于

罗比

1 个答案:

答案 0 :(得分:4)

当然 - 属于关系会为您提供一个对象(在您的情况下为Make),您可以调用方法 - 包括获取字段名称!

所以,如果你设置你的模型:

class Car < ActiveRecord::Base
  belongs_to :make
end


class Make < ActiveRecord::Base

end

Make有一个名为name的字段,您可以在视图中显示:

<p>
  <b>Make:</b>
  <%= @car.make.name %> 
</p>