私は初心者のRails開発者であり、CityControllerの「new」アクションにアクセスしようとすると次のエラーが発生します。
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の「新しい」アクションを次に示します。
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の最新バージョンを実行しています)。