我想遍历特定用户的所有team_members并在特定页面上显示他们的所有答案。而不是显示特定用户的team_members的所有答案。它向我展示了这一点。
Updates
Prashanth
<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Answer:0x00000001b2ce28>
Sai
<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Answer:0x00000001b21230>
用户模型
class User < ActiveRecord::Base
has_many :team_members
end
TeamMember模型
class TeamMember < ActiveRecord::Base
belongs_to :user
has_many :answers
end
答案模型
class Answer < ActiveRecord::Base
belongs_to :team_member
end
这是我的answers / index.html文件,我循环浏览特定团队成员的所有答案。
<h1>Updates</h1>
<% if @answers.count > 0 %>
<% @answers.each do |answer| %>
<blockquote>
<p><%= answer.name %></p>
<small><%= answer.answers %></small>
</blockquote>
<% end %>
<% else %>
<p><em>Oops, doesn't look like there are any posts yet.</em></p>
<% end %>
这是我的架构
ActiveRecord::Schema.define(version: 20141118133533) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "answers", force: true do |t|
t.string "answer"
t.integer "team_member_id"
` `t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
end
add_index "answers", ["team_member_id"], name: "index_answers_on_team_member_id", using: :btree
create_table "team_members", force: true do |t|
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.integer "user_id"
end
add_index "team_members", ["user_id"], name: "index_team_members_on_user_id", using: :btree
create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
end
这是我的AnswersController
class AnswersController < ApplicationController
before_action :authenticate_user!
def index
@answers = current_user.team_members.each do |team_member|
team_member.answers.all
end
end
end
我应该在index.html或asnwers控制器中更改什么才能获得答案列表?
答案 0 :(得分:0)
如果你的answer.answers是一个字符串数组,那么只需将视图行更改为:
<small><%= answer.answers.join ', ' %></small>
如果answer.answers包含带有包含实际答案字符串的字段的记录,则使用(如果该字段被调用&#39; body&#39;,否则将body更改为字段名称):
<small><%= answer.answers.map(&:body) %></small>
答案 1 :(得分:0)
在你的控制器中试试这个:
class AnswersController < ApplicationController
before_action :authenticate_user!
def index
@answers = Answers.where(team_member: current_user.team_members)
end
end
并在您看来:
<% if @answers.count > 0 %>
<% @answers.each do |answer| %>
<blockquote>
<p><%= answer.name %></p>
<small><%= answer.answer %></small>
</blockquote>
<% end %>
<% else %>
<p><em>Oops, doesn't look like there are any posts yet.</em></p>
<% end %>