0

has_many と belongs_to の関連付けがある Rails アプリがあります。しかし、要素を取得しようとしているときに問題が発生しています。私のモデルは、イベント、コメント、および投票です。イベントには複数のコメントと投票があります。もちろん、コメントと投票は1つのイベントに属します。

私のスキーマは

    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 %>

「投票用の未定義のメソッド "userid"」というエラーが表示されます。私のコントローラーでは、イベント ID をレンダリングしましたが、うまくいきました。ビューでそれを行うと問題があるようです..何が間違っているのでしょうか? 私はこれで完全に迷っています

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 に答える