我目前正在开发一个有点“大”的项目。在这个项目中,我有许多模型、视图和控制器,我必须从这些模型、视图和控制器中提到以下内容: Group.rb:
class Group < ActiveRecord::Base
has_many :users, through: :grouprel
has_many :grouprel, dependent: :destroy
validates :name, presence: true, length: {maximum: 25},
uniqueness: { case_sensitive: false }
validates :description, presence: true , length: {maximum: 140}
end
Grouprel.rb
class Grouprel < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :user_id, presence: true
validates :group_id, presence: true
end
User.rb
class User < ActiveRecord::Base
.....
has_many :groups, through: :grouprel, dependent: :destroy
has_many :grouprel, dependent: :destroy
.....
StaticPageController:
class StaticPagesController < ApplicationController
def home
if logged_in?
@tweet = current_user.tweets.build
@feed_items = current_user.feed.paginate(page: params[:page])
@groupi = Grouprel.where(user_id: current_user.id).pluck(:group_id)
@groupies = Group.where(id: @groupi).paginate(page: params[:page])
end
end
.....
end
Home.html.erb:
<% if logged_in? %>
.......
<section class="user_info">
<%= render 'shared/group_participation' %>
</section>
</aside>
.............
_group_participation.html.erb
<h5> Your groups: </h5>
<% if @groupies %>
<ol class="tweets">
<%= content_tag_for(:li, @groupies) do %>
<%= link_to @groupies.name, group_path(@groupies) %>
<% end %>
</ol>
<%= will_paginate @groupies %>
<% end %>
在这里,我想显示用户所属的每个组。在尝试获取StaticPagesController中的@groupies时,我遇到的错误是%23<Group::ActiveRecord_Relation:0x007f86b00f6ed0>
。我签入了rails控制台,它应该会返回一些内容。
我对rails和ruby的有限知识可以说明的是,这是一个问题,因为StaticPageController看不到Grouprel.rb表。我试着把控制员也包括进来。我甚至试图定义一个在应用程序控制器中返回'groupies‘的方法,然后在StaticPagesController中使用它。能告诉我为什么要返回错误吗?
如果我的帖子必须包含更多的规范,请告诉我,我一看到请求就会发出去。
发布于 2014-12-25 13:46:11
您没有迭代groupies
集合,而是对集合本身调用name
方法。content_tag_for
可以为您遍历集合,但是您需要使用它为块生成的值:
<%= content_tag_for(:li, @groupies) do |group| %>
<%= link_to group.name, group_path(group) %>
<% end %>
https://stackoverflow.com/questions/27647574
复制相似问题