2

在我的app/views/conversations/index.html.erb中,我正在写:

<%= render @conversations %>

希望它会_conversation.html.erb在同一目录中找到一个名为的部分,并使用它来渲染@conversations. (通常的 Rails 方式)

但我得到一个缺少模板的错误:Missing partial mailboxer/conversations/_conversation.

我正在使用Mailboxer gem,并且没有这方面的文档。我知道我可以通过<%= render partial: 'conversation', locals: { conversations: @conversations } %>.

然而,我仍然想知道为什么我的应用程序正在寻找部分 for @conversationsin mailboxer/conversations/, not conversations/,以及是否有办法改变这种行为。

更多信息

<% @conversations.each do |conversation| %>
  <%= div_for conversation %>
<% end %>

生成 HTML:

<div class="mailboxer_conversation" id="mailboxer_conversation_16"> ... </div>
<div class="mailboxer_conversation" id="mailboxer_conversation_17"> ... </div>
....

或许mailboxer_前面的conversation也跟这种情况有关?

4

2 回答 2

0

发生这种情况是因为在更高版本的 Mailboxer 中,模型在 Mailboxer 下命名空间。(例如 Mailboxer::Conversation、Mailboxer::Message。)

我也评论了 GitHub 问题。

于 2015-06-26T23:38:48.437 回答
-1

您可以尝试提供部分的完整路径,例如

<%= render :partial => "yourfoldername/conversation", collection: @conversations %>
于 2014-10-21T05:52:59.740 回答