Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 4 Rails 4关联:未定义的方法_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 Rails 4关联:未定义的方法

Ruby on rails 4 Rails 4关联:未定义的方法,ruby-on-rails-4,Ruby On Rails 4,在过去的三个小时里,我一直在网上寻找这个问题的答案,所以我要发布一个问题。我试图创建一些基本的论坛软件,但我的人际关系有问题。这就是我得到的错误 undefined method `forums' for # <ActiveRecord::Relation::ActiveRecord_Relation_Category:0x3706cb0> 希望我已经提供了足够的信息,如果还有什么需要我会更新后。通常我可以用谷歌解决这些问题,但这真的让我很困惑。提前谢谢 行动中的问题分类控制器#索

在过去的三个小时里,我一直在网上寻找这个问题的答案,所以我要发布一个问题。我试图创建一些基本的论坛软件,但我的人际关系有问题。这就是我得到的错误

undefined method `forums' for # <ActiveRecord::Relation::ActiveRecord_Relation_Category:0x3706cb0>

希望我已经提供了足够的信息,如果还有什么需要我会更新后。通常我可以用谷歌解决这些问题,但这真的让我很困惑。提前谢谢

行动中的问题分类控制器#索引

应改为 @categories=Category.all

因为Category.all希望得到多个类别,而不是一个

此外,还应更改类别/索引文件

<% for category in @categories %>
        <div class="panel panel-success">
          <div class="panel-heading">
            <h3 class="panel-title"><%= link_to category.name, category_path(category.id) %></h3>
            <h4><%= category.description %> </h4>
          </div>
            <% for forum in category.forums %>
              <div class="panel-body">  
                <h4><span class="glyphicon glyphicon-tree-conifer"></span><%= link_to forum.name, forum_path(forum.id) %> </h4>
              </div>
              <hr />
            <% end %> 
        </div>
        <% end %>



非常感谢您!我以前在控制器中使用过类别,不知道为什么要更改它。所以我一直的问题是写@category.forums。
    class CategoriesController < ApplicationController

      def index
        @category = Category.all
      end

      def show 
        @category = Category.find(params[:id])
      end

end
class ForumsController < ApplicationController

  def show
    @forum = Forum.find(params[:id])
  end
 end
class Category < ActiveRecord::Base
  has_many :forums, dependent: :destroy
end
class Forum < ActiveRecord::Base
  belongs_to :category
  has_many :threads, dependent: :destroy
end
ForumName::Application.routes.draw do 
  root 'static_pages#home'

  resources :users
  resources :sessions, only: [:new, :create, :destroy]
  resources :categories, :path => "forum"
  resources :forums
  resources :topics
  resources :posts

  match '/signup',  to: 'users#new',          via: 'get'
  match '/signin',  to: 'sessions#new',       via: 'get'
  match '/signout', to: 'sessions#destroy',   via: 'delete'

end
<% for category in @categories %>
        <div class="panel panel-success">
          <div class="panel-heading">
            <h3 class="panel-title"><%= link_to category.name, category_path(category.id) %></h3>
            <h4><%= category.description %> </h4>
          </div>
            <% for forum in category.forums %>
              <div class="panel-body">  
                <h4><span class="glyphicon glyphicon-tree-conifer"></span><%= link_to forum.name, forum_path(forum.id) %> </h4>
              </div>
              <hr />
            <% end %> 
        </div>
        <% end %>