2013-05-07 48 views
0

我有我的show action在一個名爲屬性/ _property_details.html.erb,我試圖顯示與索引操作的視圖內的Ajax。在部分顯示動作將不會顯示在索引視圖 - rails

屬性/ index.html.erb:

<div id="showdiv"> 
    <%= render :partial => 'property_details' %> 
    </div> 

屬性/ _property_details.html.erb:

<div id="response"> 
<h3> 
<%= [@property.Address,@property.City,"FL"].join(", ") %> <%= @property.Zip %></h3> 
etc etc  </div> 

然而,當我嘗試加載索引頁的所述@property可變表演動作是零,所以我得到一個

undefined method `Address' for nil:NilClass 

大概是因爲沒有(PARAMS [:編號])的演出行動REQ uired在properties_controller:

def show 
@property = Property.find(params[:id]) 

respond_to do |format| 
    format.js {render :partial => 'property_details' ,:layout => false} 
    format.html 
end 

end 

但是,如果是這樣的話,那麼我應該能夠硬編碼在表演動作@屬性的值只是爲了測試這一點,但下面的代碼仍然給出了nilclass同樣未定義的方法錯誤,當我嘗試加載包含部分的索引頁時:

def show 
    @property = Property.find(1) 

respond_to do |format| 
    format.js {render :partial => 'property_details' ,:layout => false} 
    format.html 
end 

end 

爲什麼@property回來爲零?我打開了rails控制檯並執行了p = Property.find(1)並獲得了一個返回的屬性,因此出於某種原因,部分控件在我的索引頁面內時沒有在控制器中偵聽show動作。

的部分工作正常時,它的屬性內/ show.html.erb這樣的:

<div class="twothirds"> 
<%= render :partial => 'property_details' %> 
</div> 
<div class="onethird"> 
<%= render :partial => 'property' %> 
</div> 

所以,只有當我試圖把部分我的索引頁,它不中工作。我究竟做錯了什麼?

+1

「@ property.Address」是否正確?它不是'@ property.address'? – MurifoX 2013-05-07 18:09:09

+0

是的,這是正確的,_property_details.html.erb部分工作正常,當我把它放在屬性/ show.html.erb文件 – railsy 2013-05-07 18:22:16

+0

羅西,@ murifoX是正確的,你的命名約定似乎是不正確的 - 我從來沒有見過相關模型可以用大寫字母表示。 – Kristian 2013-05-07 20:45:54

回答

0

這是我第一次嘗試Ajax,因此在用戶點擊鏈接以顯示演出動作之前,我錯誤地在索引動作中包含了部分演出動作。所以我用索引動作中的部分替換爲空的div,並且只有當用戶點擊屬性鏈接才能通過show動作查看屬性時,我才用部分通過ajax替換空的div。