1

モデルの 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

このルーティング エラーの原因は何ですか?

4

1 に答える 1

1

ただの予感。Rail のインフレータを混乱させているかもしれません。belongs_to serial多分それは代わりにすべきbelongs_to seriesですか?

ほら、通常はbelongs_to userではなくと書きusersます。だから、あなたはそれを試してみたいかもしれません.

于 2012-07-28T03:47:24.823 に答える