渲染记录轨道的不同方式

时间:2017-02-28 19:19:28

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-5

我尝试使用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:

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

1 个答案:

答案 0 :(得分:0)

<%= 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%>