【问题标题】:RoR undefined method 'to_datetime' depending on order of helper methodsRoR 未定义方法“to_datetime”取决于辅助方法的顺序
【发布时间】:2013-12-29 03:02:26
【问题描述】:

我遇到了一个非常奇怪的问题;我收到此错误

nil:NilClass 的未定义方法 `to_datetime'

render 'modal'render 'post' 之前在show.html.erb 之前,但如果在之后则不是:

<div class="page-header">
    <h2>Indlæg af <%= @user.first_name %></h2>
</div>

<% if current_user == @user %>
    <%= render 'modal' %>
<% end %>
<%= render 'post' %>

我在下面的要点中附上了视图:

要点:https://gist.github.com/czepluch/8166841

这个错误的发生取决于渲染的顺序,这对我来说毫无意义。所以我真的很想知道为什么助手的渲染顺序很重要?

【问题讨论】:

  • 与其链接到一个要点,请继续在此处发布相关代码。我们不需要全部,只需要说明您的问题的部分。
  • 这包括来自您的控制器的代码,而不仅仅是视图
  • 另外,一些堆栈跟踪将有助于确定您的哪些宝石发生了这种情况。我想我已经追踪到了这一点,但想确定一下。
  • “有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包含重现问题的有效代码。有关指导,请参阅 SSCCE.org。”

标签: ruby-on-rails ruby view-helpers


【解决方案1】:

请在问题中添加代码,以便在此处保存答案。我怀疑这与您的表单具有以下事实有关:

simple_form_for([@user, @user.posts.build]

这意味着构建了一个没有属性的新帖子,这可能会导致稍后出现 nil 错误。颠倒顺序,直到其他代码运行后才构建。乍一看,我唯一能看到的与日期时间有关的是:

time_ago_in_words(p.created_at)

如果 created_at 为 nil,由于帖子为空,可能会产生错误。

玩表单声明,你也许可以做到

simple_form_for([@user, :post])

或类似的东西来获取新帖子的表单,而无需实际将空对象附加到 @user 对象。

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 2013-06-11
    • 2014-11-19
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多