2012-05-24 41 views
-1

任何善良的人都可以看看這個,看看代碼有什麼問題。我真的不能在聯合表中撤回我的領域!我的問題是什麼?不能調用我的關聯表

視圖:

<% @playersname.each do |p|%> 
    <ul> 
<li><%= p.name %></li> 
<li><%= p.result.inspect %></li> 
</ul> 

控制器:

class ResultsController < ApplicationController 
def index 
@playersname = Player.all 
end 
end 

模型:

class Player < ActiveRecord::Base 
    attr_accessible :name 
    belongs_to :result 
end 

class Result < ActiveRecord::Base 
    # attr_accessible :title, :body 
    has_many :player 
    end 

遷移:

class CreatePlayers < ActiveRecord::Migration 
def change 
    create_table :players do |t| 
    t.string "name" 
    t.references :results 
    t.timestamps 
    end 
end 
end 

class CreateResults < ActiveRecord::Migration 
def change 
    create_table :results do |t| 
    t.string "result", :limit => 40 
    t.string "cal", :limit => 40 
    t.string "sum",:limit => 300 
    t.timestamps 
end 
end 
end 
+0

你怎麼知道什麼是錯的?當您嘗試加載視圖時,您會收到什麼錯誤/意外結果? – vlasits

+0

我的問題是.inspect如此說nil。但有一個id – Max

+0

如果我把results_id然後我得到一個數字。如果我把result.inspect然後我得到零 – Max

回答

0

你需要在你的代碼變複數玩家,在這裏:

has_many :player 

應該

has_many :players 

而且,在你看來,你應該改變:

<li><%= p.result.inspect %></li> 

到別的。它不會工作,因爲a)p沒有「結果」方法,只有一個results方法。當您撥打results的電話號碼時,您將收到您可能不想發送給瀏覽器的信息。

一旦你獲得了聯想想通了,你可能想要的東西,就像你的觀點如下:

<h1>Results</h1> 
<%= render :partial => "result", :collection => @results %> 

,然後你會在你的意見創建一個局部夾名爲_result.rb和含有這樣的代碼

<h3>Result: <%= result.title %></h3> 
<p><%= result.body %></p> 
+0

我對套牌球員沒有任何問題。但我有問題調用結果。 你瞭解我嗎? – Max

+0

我得到這個結果:# Max

+0

沒錯。這是因爲每個結果都有很多玩家,但是玩家沒有很多結果。如果您希望每個玩家獲得很多結果,您需要將該聲明添加到玩家模型中:'has_many:results'並將相應的'belongs_to:player'添加到您的結果模型中。當然,你也想刪除你現在擁有的聲明('有很多:player'和'belongs_to'結果) – vlasits