モデルの 1 つのセマンティック フォームに問題があります。該当機種は
class Event < ActiveRecord::Base
belongs_to :series
...
end
class Series < ActiveRecord::Base
has_many :events
...
end
/series/new
ブラウザでアクセスすると、次のエラーが表示されます。
series_url failed to generate from {:controller=>"series", :action=>"show"} - you may have ambiguous routes, or you may need to supply additional parameters for this route. content_url has the following required parameters: ["series", :id] - are they all satisfied?
編集:rake routes | grep series | grep new
競合するルートを探すために実行しましたが、何もありません。出力は次のとおりです。
new_series_event GET /series/:series_id/events/new(.:format) {:controller=>"events", :action=>"new"}
new_series GET /series/new(.:format) {:controller=>"series", :action=>"new"}
に対応するテンプレート/series/new
は、次のパーシャルをレンダリングします。
<% semantic_form_for(@series) do |f| %>
<%= f.error_messages %>
<% f.inputs do %>
<%= f.input :title %>
<%= f.input :uri, :label => "URL of the Series", :hint => "For example, use 'tes' for 'Transportation Education Series'. It will appear as http://events.kittelson.com/tes" <%= f.input :description %>
<%= f.input :contact, :label => "Contact email" %>
<%= f.input :color, :label => "Pick a dark color" %>
<% end %>
<% f.buttons do %>
<%= f.commit_button %>
<%= link_to "or cancel", :back %>
<% end %>
<% end %>
@series
オブジェクトがコントローラーで として定義されている場所Series.new
。
私が理解していないのは、これがルーティングにどのように関係しているかです。rake routes
実行したところ、にマップされたコントローラー アクションは 1 つだけ/series/new
です。
config/routes.rb
これらのモデルに関連する部分は次のとおりです。
ActionController::Routing::Routes.draw do |map|
map.resources :series, :has_many => :events
map.resources :events, :has_many => :rsvps
end
このルーティング エラーの原因は何ですか?