【问题标题】:Different ways of rendering collection of records rails呈现记录轨道集合的不同方式
【发布时间】:2017-07-19 21:55:53
【问题描述】:

我正在尝试使用 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 种方法:

&lt;%= render partial: 'event_message', collection: @event_messages%&gt; 在这种情况下,这条线完美地工作,并且部分被渲染了尽可能多的次数。

&lt;%= render @event_messages%&gt; 抛出缺少模板的错误,但在其他 .html.erb 文件中,我可以使用它毫无问题地渲染部分。

&lt;%= j render @event_messages %&gt; 在 .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:

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

【问题讨论】:

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


    【解决方案1】:
    <%= 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%>
    

    【讨论】:

    • 谢谢。通过在render partial: 'event_message', collection: @event_messages 前面添加j 解决了.js.erb 缺少的模板。该模板位于正确的文件夹中,但不知道为什么 &lt;%= render @event_messages%&gt; 不起作用。
    • 正是缺少的模板之一
    • 你在那个位置确实有一个部分app/views/event_messages/_event_message.html.erb
    • 哦,我想我现在明白了。我在其中使用显示操作的控制器称为“事件”,我有一个名为“_event.html.erb”的部分控制器和一个“_event_message.html.erb”。它们都位于app/views/events。正在工作的是 ,所以我认为它也适用于 &lt;%= render @event_messages%&gt;
    • 啊,我明白了,它必须在 app/views/event_messages/_event_message.html.erb 中才能使这种速记形式的渲染工作
    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多