Rails Display category name from own_to property

I would like to display the category name instead of the number (cat_id) from a belongs to the relations, I have machines and does, basically here is the code -

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> 

So basically I want the name Make here: -

 <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 

this is connected using make table - id and car table - make_id

thanks

Robbie

+4
source share
1 answer

Of course - the relationship relationship gives you an object (a Make in your case) that you can call methods on - including getting field names!

So, if you configured your models as follows:

 class Car < ActiveRecord::Base belongs_to :make end class Make < ActiveRecord::Base end 

And Make has a field called name , you could in your opinion:

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

Source: https://habr.com/ru/post/1383749/


All Articles