【问题标题】:NameError in ruby on railsruby on rails中的NameError
【发布时间】:2021-10-29 04:24:42
【问题描述】:

所以我正在制作一个应用程序来管理项目及其任务, 使用教程我做了一些基本的东西。

现在我想在我的页面中添加一个时间线,所以我在我的 pr_list.rb(模型文件)中写了这个

def timeline
  @pr_lists.each do |pr_list|
    pr_list.pr_items.each do |pr_item|
      if pr_item.completed?
        @timeline = "#{pr_item.descrpition}: {#{pr_item.completed_at}}"
      end
    end
  end
end 

我在我的 pr_list/views/index 页面中调用了它。

<h1><%= pr_list.timeline %></h1>

但我明白了

NameError (undefined local variable or method `pr_list' for #<ActionView::Base:0x00000000029fb8>
Did you mean?  @pr_lists")

在这一点上,即使我只是像输出字符串一样编码它,它也不起作用。

如果我尝试其他任何事情,它会给我一个NoMethodError

而其余的方法都有效。 如果我将上面的代码作为嵌入式红宝石写在 HTML.ERB 索引文件中,上面的代码也可以工作。

我是 Ruby on Rails 的新手。

【问题讨论】:

  • 您在模板中显示了 usepr_list;但是这个标识符是在哪里定义的?
  • 显示视图、控制器和模型。

标签: ruby-on-rails ruby model-view-controller


【解决方案1】:

pr_list 位于控制器中定义的块的本地,因此无法从模板访问。

您可以在视图文件中迭代 @pr_lists(请参阅 this question for reference):

<% @pr_lists.each do |pr_list| %>
  <% pr_list.pr_item.each do |pr_item| %>
    <% if pr_item.completed? %>
      <h2><%= pr_item.description %>: <%= pr_item.completed_at %></h2>
    <% end %>
  <% end %>
<% end %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多