2016-10-09 76 views
1

Rails的問題...Rails的Activerecord不返回值

我想從我的數據庫在視圖中連接在一起的幾個表中打印數據。具體而言,我想打印出各個屬性地址(房產模型「地址」),它的相應的註釋(從利益型「COMMENT_TEXT」)

問題:

1)現在我加盟的表風景;不過,我認爲這是不正確的,但我不確定如何將它們加入控制器。我應該加入視圖內的表嗎?或者應該在控制器中發生這種情況?

2)在我的視圖中,我想打印出地址和相應的comment_text;然而,當我嘗試打印出現在,它看起來像一個活躍的記錄關係對象,即顯示「[」測試「]」,我希望它顯示「測試」

任何想法?下面的代碼:


模式:

create_table "interests", force: :cascade do |t| 
    t.integer "user_id" 
    t.integer "property_id" 
    t.string "interested", default: "unknown" 
    t.string "comment_text" 
    t.datetime "created_at",      null: false 
    t.datetime "updated_at",      null: false 
end 

add_index "interests", ["property_id"], name: "index_interests_on_property_id" 
add_index "interests", ["user_id"], name: "index_interests_on_user_id" 

create_table "properties", force: :cascade do |t| 
    t.string "address" 
    t.string "city" 
    t.string "state" 
    t.integer "zip" 
    t.datetime "created_at",        null: false 
    t.datetime "updated_at",        null: false 
end 

型號:

class Property < ActiveRecord::Base 
    has_many :interests 
    has_many :users, through: :interests 

    default_scope {order("id ASC")} 
end 

class Interest < ActiveRecord::Base 
    belongs_to :property 
    belongs_to :user 

    validates :user_id, :presence => true 
    validates :property_id, :presence => true 
end 

控制器:

def index 
    @properties = Property.all 
end 

查看:

<% @properties.each do |p| %> 
    <td><%= p.interests.collect(&:comment_text) %> 
<% end %> 

回答

1

1)現在我加入視圖中的表格;不過,我認爲這是不正確的,但我不確定如何將它們加入控制器。我應該加入視圖內的表嗎?或者應該在控制器中發生這種情況?

答案是基於意見的。有些人贊同視圖中的DB-Queries以獲得各種權限。例如視圖可以被緩存,所以你不會查詢你的數據庫。其他人認爲它不屬於其他原因,比如更好的測試。所以你可以自由選擇或遵循路徑。

2),即顯示 「[」 測試 「]」,我想它顯示 「測試」

p.interests.collect(&:comment_text)返回一個數組。 Erb間接呼叫p.interests.collect(&:comment_text).to_s,這樣你就能看到你所看到的。

如果你想要一個不同的輸出,你必須迭代你的comment_texts。

<% @properties.each do |property| %> 
    property.interests.each do |interest| 
     <td><%=interest.comment_text %> 
    <% end %> 
<% end %> 
+0

感謝slowjack!不知道我是如何錯過的,但工作! – Anthony

0

我想,如果你使用include.With包括,活動記錄,確保所有指定的協會使用的查詢的最小可能數加載這將是巨大的。

EX- 控制器:

def index 
@properties = Property.includes(:interests) 
end 

觀點:

<% @properties.each do |property| %> 
    property.interests.each do |interest| 
    <td><%=interest.comment_text %> 
<% end %> 
<% end %> 

參考ActiveRecord QueryMethods

相關問題