Rails未定义的方法:NilClass错误?

时间:2012-06-19 20:08:20

标签: ruby-on-rails null rails-models

我有一个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“投票”。在我的控制器中,我渲染我的偶数并且它有效。所以当我在视图中这样做时似乎是一个问题。 任何想法我可能做错了什么?我完全迷失了这个

2 个答案:

答案 0 :(得分:0)

可能就像使用event_id而不是eventid一样简单。

运行rails console并在那里玩游戏总是值得的。您通常可以自动填充方法。

v = Vote.new
v.event<tab to get options>

答案 1 :(得分:0)

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

在标准情况下,所有型号的主键都为 ID ,只有 ID

要与其他模型相关联,例如,您的投票模型需要belongs_to :event关联, event_id 列。这些是铁路标准

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