我的rails应用程序中有3个控制器/型号: 胡椒 事件 链接
has_many :events
belongs_to :pepper
has_many :links
belongs_to :event
Peps::Application.routes.draw do
resources :events do
resources :links
end
resources :peppers do
resources :events
end
resources :links
resources :events
resources :peppers
end
<p id="notice"><%= notice %></p>
<%= form_for([@pepper, @pepper.events.build]) do |f| %>
<p>Titolo : <%= f.text_field :title %></p>
<p>Note: <%= f.text_area :note %></p>
<p><%= f.submit "Aggiungi evento" %></p>
<% end %>
<p>
<b>Title:</b>
<%= @pepper.title %>
</p>
<p>
<b>Note:</b>
<%= @pepper.note %>
</p>
<hr>
<% for event in @events %>
<h3><%= event.title %></h3>
<p><%= event.note %></p>
<ul>
<% for link in event.links %>
<li><%= link.url %></li>
<% end %>
</ul>
<%= link_to 'Cancella evento', link, confirm: 'Are you sure?', method: :delete %>
<% end %>
<%= link_to 'Edit', edit_pepper_path(@pepper) %> |
<%= link_to 'Back', peppers_path %>
此视图效果很好,不会出现任何错误。
但是如果我在<ul>
元素
<%= form_for([event, event.links.build]) do |f| %>
<p><%= f.text_field :url %></p>
<p><%= f.submit "Aggiungi link" %></p>
<% end %>
我收到此错误
No route matches {:controller=>"links", :format=>nil, :event_id=>#<Event id: nil, title: nil, note: nil, created_at: nil, updated_at: nil, pepper_id: 4>}
这个错误是为了什么?
答案 0 :(得分:1)
如果没有看到您的控制器代码,我无法确定这一点,但我怀疑问题是@events
是Rails关系而不是正确的数组。在你的控制器中,如果你有类似的东西:
@events = @pepper.events
您需要将其更改为:
@events = @pepper.events.all
强制@events解析为具体数组。否则,迭代@events
将包含您为第一个表单构建的空事件:
<%= form_for([@pepper, @pepper.events.build]) do |f| %>
如果这不能解决您的问题,请发布此视图的相关控制器代码。