2011-11-29 22 views
4

我想显示一个类别名称,而不是一个数字(CAT_ID)从所属关系,我有车,使,基本上这里的代码 -滑轨从belongs_to的显示类别名称

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> 

所以基本上我想要的制作名称的位置: -

<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 

它是通过化妆台相关 - ID号,车型表 - make_id

感谢

罗比

回答

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> 
+0

注意,许多人可能认为这是一个违反德米特法,但其重要性取决于开发者。 –

+0

没有意识到这是那么容易,谢谢;) –

+0

是的,我想过提到类似的东西(Rails给出的委托方法是有趣的阅读有时),但决定反对它(不要把这个问题复杂化到一个Rails初学者):) – RyanWilcox

相关问题