2012-07-02 2 views
1

Я видел похожие примеры здесь. Но это просто не работает для меня. Я хочу создать/отправить мероприятие для публикации. Есть несколько дней под постом. И деятельность находится на определенную дату. См. Модели ниже.Ruby on Rails Вложенные ресурсы неопределенный метод

Модели:

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 

Маршруты:

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

рейк маршруты

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 

show.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 %> 

ошибка

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

Но я видел его в реках маршрутах ... заранее спасибо!

ответ

1

Правильная плюрализация для «активности» - это «действия».

В вашем config/routes.rb у вас есть «действия», что неверно.

+0

большое спасибо! Я не понимал, что плюрализация так важна в ROR. Я думал, что пока я использую деятельность везде, все должно быть хорошо. – user1495133

+0

@ user1495133 Подробнее о том, как это делает Rails, см. [Класс Inflector] (http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html). –

Смежные вопросы