除了一个例子,我不知道如何解释这个。
我有一个与自己联系的单词模型。单词可以有变体(即该单词的不同版本,例如Mouse
和Mice
)。
class Word < ActiveRecord::Base
has_many :variations, class_name: "Word", foreign_key: "variant_id"
belongs_to :variant, class_name: "Word"
end
调用@word.variations
会列出基本字的所有变体。例如在Mouse上调用它会给我们一个包含Mice的数组。 @word.variant
,当被叫到老鼠时会给老鼠。这工作正常,但是,
在我看来,我不仅得到了预期的变化,还得到了额外的元素/words
我使用以下代码进行打印:
<% @word.variations.each do |v| %>
<%= link_to v.name, v %>,
<% end %>
打印Mouse
的变体会产生Mice, /word
,其中Mice
正确链接到该字词的显示页面,/word
链接到localhost:3000/word
知道可能导致这种情况的原因吗?
答案 0 :(得分:0)
我明白了!
我不得不在我的视图中调用@word.variations.each
,而是打电话给@word.variations.all.each
。我在控制器中创建了一个新变量:
@variations = @word.variations.all
然后在我看来,我在该变量上调用.each
。
<% @variations.each do |v| %>
<%= link_to v.name, v %>,
<% end %>
这样的方式更好一些。出于某种原因,@word.variations
包含有趣的额外元素。
如果有人知道为什么会这样,请告诉我。除此之外,问题得到了回答。