【问题标题】:In a show action, how to list objects that are in a associated model?在显示操作中,如何列出关联模型中的对象?
【发布时间】:2015-07-23 12:24:04
【问题描述】:

我这里要做的是列出项目中每个活动的条目。

app/controllers/projects_controller.rb:

class ProjectsController < ApplicationController
    def index
        @projects = Project.all
    end

    def show
        @project = Project.find(params[:id])
        @activities = @project.activities
    end
end

app/views/projects/show.html.erb:

  <div>
    <p><%= @project.description %></p>

    <% @activities.each do |activity| %>
      <div>
        <p><%= activity.name %></p>

        <% activity.entries.each do |entry| %>  <= the error is at this line
            <p><%= entry.name %></p>
        <% end %>

      </div>
    <% end %>
  </div>

我的模型是:

  • 项目:有很多活动
  • 活动:有很多条目,属于项目
  • 条目:属于活动

我运行它时得到的错误: 显示文件上的“未初始化常量 Activity::Saisy”

我不知道是否可以将每个循环放入另一个每个循环中?也许这就是问题所在,但我找不到其他方法......

非常感谢您的帮助。

【问题讨论】:

  • Saisy?你的代码中有没有提到这个词?
  • 谢谢。你找到了问题所在。事实上,我已经发布了我的法语应用程序的英文版,其中“Saisie”是“Entry”的法语单词。但是对于 Rails,“Saisies”这个词是“Saisy”的复数形式,而在我的应用程序中并非如此。现在我已经用莎士比亚的语言翻译了我的应用程序,一切运行良好。
  • 我刚刚发现可以解决其他语言的多元化问题:stackoverflow.com/questions/2998551/…
  • 是的,根据Ruby Community Style Guide:“英文名称标识符”。这在使用大量约定的 Rails 中尤其重要。
  • 嗯,感谢 ruby​​ 风格指南。我不知道。

标签: ruby-on-rails


【解决方案1】:

尝试将activity 重命名为a,可能activity 是保留工作

 <div>
    <p><%= @project.description %></p>

    <% @activities.each do |a| %>
     <div>
      <p><%= a.name %></p>

      <% a.entries.each do |entry| %>
         <p><%= entry.name %></p>
      <% end %>
     </div>   
   <% end %>
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多