Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails :0xc104ef4>_Ruby On Rails_Ruby_Routes_Associations_Nested Routes - Fatal编程技术网

Ruby on rails :0xc104ef4>

Ruby on rails :0xc104ef4>,ruby-on-rails,ruby,routes,associations,nested-routes,Ruby On Rails,Ruby,Routes,Associations,Nested Routes,我有3个嵌套资源:sources、twitter\u source和twitter\u aggregation\u方法 其各自模型的关系如下所示: resources :sources do resources :rss_sources resources :twitter_sources do resources :twitter_aggregation_methods resources :influencer_trends do resources

我有3个嵌套资源:sources、twitter\u source和twitter\u aggregation\u方法

其各自模型的关系如下所示:

resources :sources do
 resources :rss_sources
   resources :twitter_sources do
     resources :twitter_aggregation_methods
     resources :influencer_trends do
       resources :trends
     end
   end
end
<%= form_for([@twitter_source, @twitter_aggregation_method]) do |f| %>
  <% if @twitter_aggregation_method.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@twitter_aggregation_method.errors.count, "error") %> prohibited this twitter_aggregation_method from being saved:</h2>

  <ul>
  <% @twitter_aggregation_method.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>

<div class="field">
  <%= f.label :twitter_source_id %><br>
  <%= f.text_field :twitter_source_id, value: @twitter_source.id %>
</div>
<div class="field">
  <%= f.label :aggregation_method %><br>
  <%= f.text_field :aggregation_method %>
</div>
<div class="actions">
<%= f.submit %>
资料来源.rb

twitter_source.rb

twitter_聚合_方法.rb

config/routes.rb的设置如下:

resources :sources do
 resources :rss_sources
   resources :twitter_sources do
     resources :twitter_aggregation_methods
     resources :influencer_trends do
       resources :trends
     end
   end
end
<%= form_for([@twitter_source, @twitter_aggregation_method]) do |f| %>
  <% if @twitter_aggregation_method.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@twitter_aggregation_method.errors.count, "error") %> prohibited this twitter_aggregation_method from being saved:</h2>

  <ul>
  <% @twitter_aggregation_method.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>

<div class="field">
  <%= f.label :twitter_source_id %><br>
  <%= f.text_field :twitter_source_id, value: @twitter_source.id %>
</div>
<div class="field">
  <%= f.label :aggregation_method %><br>
  <%= f.text_field :aggregation_method %>
</div>
<div class="actions">
<%= f.submit %>
当我尝试添加一个新的twitter\u aggregation\u方法时,出现以下错误:

NoMethodError in TwitterAggregationMethods#new

Showing /home/notebook/work/abacus/app/views/twitter_aggregation_methods/_form.html.erb where line #1 raised:

undefined method `twitter_source_twitter_aggregation_methods_path' for #<#<Class:0xb982e10>:0xc104ef4>

错误指向此部分的第一行

查看定义的资源,twitter\u source\u twitter\u aggregation\u methods\u path不存在。因此,出现了错误。 您可以执行rake路由并检查前缀,以了解所有路由都存在

从TwitterAggregationMethodsnew,您将期望转到TwitterAggregationMethodscreate,以便以以下形式传递源的实例:

替换

<%= form_for([@twitter_source, @twitter_aggregation_method]) do |f| %>


并在TwitterAggregationMethodsnew中设置@source。

我已经按照建议更改了我的twitter\u aggregation\u方法的部分和创建操作的形式,并且成功了。我已经使用rake路由的前缀纠正了twitter\u aggregation\u方法视图中的一些路由问题
<%= form_for([@twitter_source, @twitter_aggregation_method]) do |f| %>
<%= form_for([@source, @twitter_source, @twitter_aggregation_method]) do |f| %>