Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 Rails-按类别显示所有问题_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails-按类别显示所有问题

Ruby on rails Rails-按类别显示所有问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有问题和分类模型。问题模型有category_id列 class Question belongs_to :category end class Category has_many :questions end 在我的控制器中,我有: def index @categories = Category.all @questions = Question.all end 我想显示属于指定类别的所有类别和所有问题。此外,我想在每个类别下显示问题编号,并制作它们的链接,稍后它将

我有问题和分类模型。问题模型有category_id列

class Question
  belongs_to :category
end
class Category
  has_many :questions
end
在我的控制器中,我有:

def index
   @categories = Category.all
   @questions = Question.all
end
我想显示属于指定类别的所有类别和所有问题。此外,我想在每个类别下显示问题编号,并制作它们的链接,稍后它将打开新页面,单击问题

我就是这样尝试的:

<% @categories.each do |category| %>
    <h1><%= category.name %></h1>
    <% @questions.each do |question| %>
         <ul>
             <li><%= link_to question.id %></li>
         </ul>
    <% end %>
<% end %>


应该是这样的,但我被卡住了:

类别1
1234

类别2
1234


问题:如何实现我显示上面显示的问题

您可以这样做:

控制器:

def index
   @categories = Category.all
end
视图:



既然您说要显示所有类别,以及属于这些类别的问题,我假设您粘贴的索引操作来自您的categories\u控制器

我能想到的一个解决方案是更改索引中的实例变量。我真的看不出有引用所有问题对象的实例变量的目的。这就是我所说的:

@questions = Question.all
是的,摆脱它。你应该不会介意的

@categories = Category.all
由于要显示所有类别,因此该实例变量是必需的。由于您提到您还希望显示属于每个类别的所有问题,因此该实例变量对于正确的视图就足够了。您的思路是正确的,但只需使用@categories实例变量;忘掉@问题吧。以下是您的视图可能的样子(您在上面的正确轨道上):



还要注意的是,在第一行代码中,当你开始一个块时,你不需要感谢……这是一个很好的答案。另一个问题是,在显示问题id时,是否可以使它们始终从一开始?Id不同(即8、12、24),但我需要1、2、3、4、5、6?@Unknown19这完全是另一个问题,也许你应该为此创建另一个问题。谢谢。这也是一个很好的答案,但马克西姆在你面前回答得很少。另一个问题是,在显示问题id时,是否可以使它们始终从一开始?Id不同(即8、12、24),但我需要1、2、3、4、5、6?@Unknown19我不知道。。。也许再等一会儿,看看是否有人对解决方案发表意见。我认为您可能需要编写自己的helper方法,或者使用一些简单的方法。这可能是一个有趣的练习。这样做,它将改进您的查询->
@categories=Category。包括(:questions)
,也不要触摸表的
ids
,只需添加名为
position
的额外列即可。
@categories = Category.all
<% @categories.each do |category| %>
   <h1><%= category.name %></h1>
      <% category.questions.each do |question| %>
      <ul>
         <li><%= link_to question.id, question_path %></li>
      </ul>
      <% end %>
<% end %>