我是一名新手 Rails 开发人员,在尝试访问我的 CityController 上的“新”操作时遇到以下错误:
undefined method `cities_path' for #<#<Class:0x104608c18>:0x104606f08>
Extracted source (around line #2):
1: <h1>New City</h1>
2: <%= form_for(@city) do |f| %>
3: <%= f.error_messages %>
4:
5: <div class="field">
作为一些背景,我有一个包含许多城市的州模型。单击来自状态显示页面的以下链接后,我收到此错误:
<p>Add a city: <%= link_to "Add city", new_state_city_path(@state) %></p>
当我运行“rake:routes”时,它说这是一条合法的路线......
更多背景信息,这里是 CityController 'new' 动作:
def new
@city = City.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @city }
end
end
这是视图中的(完整)表单:
<%= form_for(@city) do |f| %>
<%= f.error_messages %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这最初让我认为这是一个资源/路线问题,因为它提到了“cities_path”(事实上,这是另一个发布到 Stack Overflow 的人的错误(Rails 错误“NoMethodError” - 我的第一个 ruby 应用程序)。但是,从我所看到的情况来看,情况似乎并非如此。这是我的资源在路由文件中的外观:
resources :states do
resources :cities
end
当它们不是子资源时,我可以让它工作,但我真的需要将它们作为我未来计划使用该应用程序的子资源。任何帮助都将不胜感激,因为我为此绞尽脑汁的时间比我愿意承认的还要多……谢谢!
(完全不确定这是否重要,但我正在运行最新版本的 Rails 3 beta2)。