【问题标题】:how to display data from a associated model如何显示来自关联模型的数据
【发布时间】:2014-06-24 09:14:26
【问题描述】:

目前遇到问题

我有一个 company.rb 模型 has_many :applications

application.rb 模型 belongs_to :companyhas_many :answers

answer.rb 模型 belongs_to :application.rbhas_many :users

user.rb 模型 has_many :answers

我允许公司创建应用程序。他们可以在那里输入问题。用户可以查看他们,他们的答案将存储在 answer.rb 中。

我现在要做的是显示所有收到答案的 current_company.applications。

我试过了:

<% @applications.all.each do |f| %>

<%= f.answers.answer_1 %><br>

<% end %>

虽然拥有我的控制器:

 def applicants
   @applications = current_company.applications
 end

但是我得到了未定义的方法“answer_1”。我似乎无法访问它。我这样存储它: 应用程序有一个 company_id,答案有一个 application_id 和一个 user_id。

我认为通过我现在的做法,我可以访问当前公司创建的所有应用程序。从那里我可以查看答案中的所有 application_id,因为这些是我正在输出的,但它不起作用。

【问题讨论】:

  • 什么是 answer_1?你打算打印什么?
  • 你如何表达这个问题?另外,has_many :users 的答案是怎么来的?
  • @Acacia 我让公司输入3个问题。存储的 question_1、question_2、question_3。然后我有一个名为 answers 的模型,它存储 answer_1、answer_2、answer_3
  • @TamerShlash 因为多个用户可以回答同一个问题,而一个用户可以回答属于不同 applications_ids 的其他几个问题。是不是配置错了?
  • @user2755537 是 question_1, question_2, question_3answer_1, answer_2, answer_3 Answer.rb 模型中的所有字段?

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


【解决方案1】:

我认为您理解错误访问嵌套模型的方式。

当应用程序 has_many: :answers 时,@application.answers 是一个可以迭代的集合。例如(在您看来):

<% @applications.each do |application| %>
  <% application.answers.each do |answer| %>
     <%= answer.text %>
  <% end %>
<% end %>

(假设您的答案模型具有文本属性)。

【讨论】:

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