我的Rails 3.1应用程序出现问题。我有两个控制器&模型,命名县/县和镇/镇。
县模型有has_many :towns
,城镇模型有belongs_to :county
。
我正在尝试在Towns索引页面上显示县名,以便将标题显示为“-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
答案 0 :(得分:0)
@towns
是......城镇的集合。不是一个单独的城镇。一组城镇没有县(根据您的模型),只有一个城镇有一个县。
如果你在城镇的索引页面并试图显示一个县的城镇,你不清楚你真正在做什么 - 你是否列出了每个城镇的县,并试图显示那个县的其他城镇?那将是town.county.towns
(但您可能想要删除“当前”城镇)。
我不知道为什么你为counties
控制器显示任何内容,因为你在towns
页面上。如果你想要所有的县也,那么这样做,但县控制器不参与。
答案 1 :(得分:0)
我与州和国家(对镇和县)有类似的问题。 对于您的城镇迁移,您是否有一个整数来引用该县(请参阅下面的 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
然后在你的app / 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