Как вызвать переменную через метод find - PullRequest
1 голос
/ 26 января 2011

Я новичок в ruby ​​на рельсах, и вот проблема:

Я пытаюсь получить имя клиента в цикле об информации об автомобиле.В данных автомобиля содержится столбец с именем «own_to», который является идентификатором клиента.

Важная строка: <td><%= @client.find(car.belongs_to) %></td>

Контроллер:

  def index
    @cars = Car.all

    @client = Client.all

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

Какребята, вы бы сделали это?

Ответы [ 4 ]

7 голосов
/ 26 января 2011

Вы бы использовали Модели для достижения этого:

class Car < ActiveRecord::Base
  belongs_to :client
end

class Client < ActiveRecord::Base
  has_many :cars
end

и в своем представлении:

@car.client

РЕДАКТИРОВАТЬ

или другоенаоборот:

@client.cars
# to iterate over them:
@client.cars.each do |car|
  # do something with car
end
4 голосов
/ 26 января 2011

assign_to - не очень хорошее имя столбца. Существует тип ассоциации, называемый "assign_to", где вы можете установить связь между моделями, где одна из них "принадлежит_ другой" модели, например:

class Car < ActiveRecord::Base
  belongs_to :client  # there is a column on the cars table called "client_id"
end

и

class Client < ActiveRecord::Base
  has_many :cars
end

Тогда вы можете сделать:

client = car.client

Взгляните на Руководства по Ruby on Rails - Руководство по ассоциациям активных записей

2 голосов
/ 26 января 2011

Попробуйте

Client.find(car.belongs_to)

То, что вы действительно хотите сделать, хотя у вашей Car модели есть что-то подобное

belongs_to :client

А у вашей Client модели

has_many :cars

Тогда вы можете просто позвонить @car.client, чтобы получить то, что вы хотите.

0 голосов
/ 26 января 2011

Я думаю, вы могли бы сделать что-то вроде:

@cars.each do |car|
  car.client
end

и в модели автомобиля, я думаю, у вас уже есть:

belongs_to :client
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...