Rails 3.1 Неопределенный метод с has_many & own_to - PullRequest
1 голос
/ 21 января 2012

У меня проблемы с моим приложением Rails 3.1.У меня есть два контроллера и модели, названные графства / графство и города / город.

Модель округа имеет has_many :towns, а модель города belongs_to :county.

Я пытаюсь показатьНазвание округа на странице указателей городов, чтобы название отображалось как «Города в -county-name-».Однако, когда я ставлю %h1 Towns in #{@towns.county.name}, я получаю ошибку undefined method 'county'.

Контроллер городов для индекса равен

def index
    @towns = Town.all
end

Для контроллера округа:

def index
    @counties = County.all
end

Мой routes.rb -

resources :counties, :path => "/locations" do
    resources :towns, :path => "/"
end

Что я делаю не так?

РЕДАКТИРОВАТЬ: при использовании этого в моем городе / индексном представлении отображаются town.county.id и town.county.name:

- @towns.each do |town|
  %tr
    %td= town.county.id
    %td= town.county.name
    %td= town.name
    %td= town.description
    %td= town.slug

Ответы [ 2 ]

0 голосов
/ 23 января 2012

У меня была похожая проблема со штатами и странами (против города и округов). Для миграции из вашего города, у вас было целое число для ссылки на округ (см. county_id ниже)

class CreateTowns < ActiveRecord::Migration
  def change
    create_table :towns do |t|
      t.string :name
      t.integer :county_id

      t.timestamps
    end
  end
end

Затем в вашем приложении / views / town / index.html.erb вы можете выполнить County.find

 %tr
    %td= town.county.id
    %td= County.find(town.county_id).name
    %td= town.name
    %td= town.description
    %td= town.slug
0 голосов
/ 21 января 2012

@towns это коллекция ... городов. Не отдельный город. Коллекция городов не имеет округа (в соответствии с вашей моделью), только отдельный город имеет округ.

Если вы находитесь на странице указателей городов и пытаетесь показать города в округе, неясно, что вы на самом деле делаете - вы перечисляете округ для каждого города и пытаетесь показать другие города в этом округе? Это будет town.county.towns (но вы, вероятно, захотите удалить «текущий» город).

Я не знаю, почему вы показываете что-то для контроллера counties, поскольку вы находитесь на странице towns. Если вы хотите получить все графства , а также , то сделайте это, но контроллер графства не участвует.

...