呈现记录集合的不同方式 rails

Different ways of rendering collection of records rails

我正在尝试使用 rails 中的部分渲染元素集合。我发现了 3 种有效的方法,但并非所有方法都适用于同一个 html 文档。 这些是我发现有效的方法,但我不明白为什么有些方法在某些文件中有效,而有些则不能。

<%= j render @event_messages %>

<%= render @event_messages%>

<%= render partial: 'event_message', collection: @event_messages%>

假设我有 html 文件 index.html.erb 和部分文件 _event_message.html.erb。现在我将介绍这 3 种方法:

<%= render partial: 'event_message', collection: @event_messages%> 这条线在这种情况下工作得很好,部分会根据需要多次渲染。

<%= render @event_messages%> 抛出缺少模板错误,但在其他 .html.erb 文件中,我可以使用它来毫无问题地呈现部分。

<%= j render @event_messages %> 在 .js.erb 文件中工作,但是 'j' 代表什么?我将这种方法与 ajax 回调一起使用,并且在某些情况下它有效,但对于其他情况,我会收到缺少模板的错误。

Missing partial event_messages/_event_message with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:

我已尽力描述问题。如果您需要更多信息,请告诉我。

<%= j render @event_messages %>

jescape_javascript 方法的别名。

此行有效,因为它有效...符合预期

<%= render partial: 'event_message', collection: @event_messages%>

然而,只有当部分文件位于 event_messages 子文件夹中时,此文件才有效,因为它会在 app/views/event_messages/_event_message.html.erb 中查找部分文件,而不是在当前文件夹中。因此,将您的部分移动到正确的位置,它将起作用。

<%= render @event_messages%>