2

抱歉,如果我使用了错误的术语,我对 Rails 还是很陌生。

问题:我在一个变量中检索一个 activerecord 关系,我想在数组中的每个项目中添加更多的键/值对,这样它们都可以在视图中轻松访问。我该怎么做呢?

控制器

def index
    @rooms = Room.all.reverse
    @sessions = Session.all
    ##returns => [#<Session id: 4,  user_ip: "127.0.0.1", user_token: "", room_session: "", position: 2 ...>], #<Session id: 3, ...>]
    @sessions.map  do |k, v|
      ##Add the room associated with each session & other k/v pairs
    end
    ##want to return => [#<Session id: 4, room: 'Marvin', spaghetti: 'monster' (etc...),  user_ip: "127.0.0.1", user_token: "", room_session: "", position: 2 ...>], #<Session id: 3, ...>]

    end
  end

看法

- @sessions.each do |session|
  %tr
    %td= session.topic_id
    %td= session.room
    %td= session.spaghetti

编辑: 我希望能够添加任意值,例如 'spaghetti' => 'monster' 和来自诸如 Session.room 等关系的信息

做这个的最好方式是什么?

谢谢!

4

1 回答 1

1

在 Session find 中包含房间只会在 Session db 查找期间将房间添加到会话中(例如,如果您查看日志,您会看到房间也在被找到。)然后您可以访问缓存的房间通过关联(即 session.room)

如果您要添加任意项目,最好的方法是通过模型中的方法......例如在您的 Session 类中:

def spaghetti
  "Monster" # or whatever else you wanted spaghetti to be.
end

然后,您将能够像访问任何其他属性一样访问视图中的 spaghetti 属性,例如

session.spaghetti # => "Monster"

希望有帮助。

于 2013-04-04T18:39:24.840 回答