我尝试使用rails中的partial来渲染元素集合。我找到了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文件,但&#39; j&#39;是什么?代表?我使用这种方法使用ajax回调,并且在某些情况下它可以工作,但对于其他人我得到了丢失的模板错误。
Missing partial event_messages/_event_message with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
我尽力描述这个问题。如果您需要更多信息,请告诉我们。
答案 0 :(得分:0)
<%= j render @event_messages %>
j
是escape_javascript
方法的别名。
这条线很有效,因为它可以正常工作......
<%= render partial: 'event_message', collection: @event_messages%>
然而,只有当部分在event_messages
子文件夹中时,这个才有效,因为它在app/views/event_messages/_event_message.html.erb
中查找部分,而不在当前文件夹中。因此,将您的部分移动到正确的位置,它将起作用。
<%= render @event_messages%>