Ruby on rails Rails-按类别显示所有问题
我有问题和分类模型。问题模型有category_id列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 我想显示属于指定类别的所有类别和所有问题。此外,我想在每个类别下显示问题编号,并制作它们的链接,稍后它将
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 %>