0

我有一个 rails 应用程序,其中有 has_many 和 belongs_to 关联。但是我在尝试检索元素时遇到了问题。我的模型是事件、评论和投票。事件有多个评论和投票。当然评论和投票属于一个事件。

我的架构是

    create_table "events",
        t.string   "etime"
        t.integer  "eid"
      end
    create_table "votes",
        t.integer  "eventid"
        t.string  "userid"
        t.integer  "event_id"
    end 

协会:

    class Event < ActiveRecord::Base
    has_many :comments
    has_many :votes
    end
    class Votes < ActiveRecord::Base
        belongs_to :event
    end

我正在尝试查看对这些事件的所有投票。控制器动作是:

    @events = Event.all
@events.each do |event|
    event.votes.each do |vote|
        respond_to do |format|
            format.html
        end
    end 
end

查看和错误行:

    <%= @vote.userid %>

我收到一个错误“未定义的方法”用户 ID“投票”。在我的控制器中,我渲染了我的 eventid 并且它起作用了。因此,当我在视图中执行此操作时,这似乎是一个问题。知道我可能做错了什么吗?我完全迷失了这个

4

2 回答 2

0

在某个地方你搞错了,你的表迁移,就像你的 foreign_key 名称一样,你的主键也是错误的。

在标准情况下,所有模型都有主键作为id,只是id

例如,为了与其他模型belongs_to :event关联,您的投票模型需要一个event_id列。这些是导轨标准

让我们假设,您的关联/列是正确的,您得到的错误是因为您的@vote对象是nil,在您的控制器中,您需要分配/初始化@vote变量以使用您似乎没有做的视图。

于 2012-06-19T20:20:48.327 回答
0

可能就像使用event_id而不是eventid.

rails console在那里跑步和玩耍总是值得的。您通常可以自动完成方法。

v = Vote.new
v.event<tab to get options>
于 2012-06-19T20:10:29.363 回答