首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails ActiveRecord_Relation

Rails ActiveRecord_Relation
EN

Stack Overflow用户
提问于 2014-12-25 13:21:49
回答 1查看 274关注 0票数 0

我目前正在开发一个有点“大”的项目。在这个项目中,我有许多模型、视图和控制器,我必须从这些模型、视图和控制器中提到以下内容: Group.rb:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
class Grouprel < ActiveRecord::Base
    belongs_to :user
    belongs_to :group
    validates :user_id, presence: true
    validates :group_id, presence: true
end

User.rb

代码语言:javascript
运行
复制
class User < ActiveRecord::Base
.....
  has_many :groups, through: :grouprel, dependent: :destroy
  has_many :grouprel, dependent: :destroy
.....

StaticPageController:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
<% if logged_in? %>
.......
      <section class="user_info">
        <%= render 'shared/group_participation' %>
      </section>
    </aside>
 .............

_group_participation.html.erb

代码语言:javascript
运行
复制
<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中使用它。能告诉我为什么要返回错误吗?

如果我的帖子必须包含更多的规范,请告诉我,我一看到请求就会发出去。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-25 13:46:11

您没有迭代groupies集合,而是对集合本身调用name方法。content_tag_for可以为您遍历集合,但是您需要使用它为块生成的值:

代码语言:javascript
运行
复制
<%= content_tag_for(:li, @groupies) do |group| %>
  <%= link_to group.name, group_path(group) %>
<% end %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27647574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档