Método indefinido de recursos anidados de Ruby on Rails

Vi ejemplos similares aquí. Pero simplemente no funciona para mí. Quiero crear/enviar una actividad para publicar. Hay varios días debajo de una publicación. Y una actividad está bajo una fecha específica. Ver modelos a continuación.

Modelos:

class Post < ActiveRecord::Base
  has_many :dayinposts
  has_many :activitys, :through => :dayinposts
end

class Dayinpost < ActiveRecord::Base
  belongs_to :post
  has_many :activitys
end

class Activity < ActiveRecord::Base
  belongs_to :dayinpost
end

Rutas:

resources :posts do
  resources :dayinposts  do
resources :activitys
  end 
end

rutas de rastrillo

post_dayinpost_activitys GET /posts/:post_id/dayinposts/:dayinpost_id/activitys(.:format)          activitys#index
                         POST /posts/:post_id/dayinposts/:dayinpost_id/activitys(.:format)          activitys#create

mostrar.html.erb

<% @post.dayinposts.each do |dayinpost| %>

<% dayinpost.activitys.each do |activity| %>
  <p>
  <b>Action:</b>
  <%= activity.action %>
  </p>
<% end %>

<%= form_for([@post, dayinpost, dayinpost.activitys.build]) do |f| %>
  <div class="field">
  <%= f.label :action %><br />
  <%= f.text_field :action %>
  </div>

<div class="actions">
<%= f.submit %>
</div>
<% end %>

<% end %>

error

undefined method `post_dayinpost_activities_path' for #<#<Class:0x40cb6d8>:0x40c9890>

Pero lo he visto en las rutas del rake... ¡gracias de antemano!

preguntado el 02 de julio de 12 a las 05:07

1 Respuestas

La pluralización correcta de "actividad" es "actividades".

En su config/routes.rb tienes "actividades", lo cual está mal.

Respondido 02 Jul 12, 05:07

¡muchas gracias! No me di cuenta de que la pluralización es tan importante en ROR. Pensé que siempre que use actividades en todas partes, debería estar bien. - user1495133

@user1495133 Ver el Clase de inflectores para obtener más información sobre cómo Rails hace esto. - Edward Ocampo-Gooding

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.