2013-05-07 50 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。