0

我在一个名为 properties/_property_details.html.erb 的部分中有我的显示操作,我试图在索引操作的视图中使用 ajax 显示该操作。

属性/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

大概是因为properties_controller中要求的显示操作没有(params [:id]):

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

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

end

但如果是这种情况,那么我应该能够在 show 操作中硬编码 @property 的值来测试这一点,但是当我尝试加载包含部分的索引页面时,以下代码仍然为 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) 并返回了一个属性,因此由于某种原因,当它在我的索引页面中时,部分没有在控制器中监听显示操作。

当它在 properties/show.html.erb 中时,部分工作正常,如下所示:

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

所以只有当我试图将部分放在我的索引页面中时它才不起作用。我究竟做错了什么?

4

1 回答 1

0

这是我第一次尝试 Ajax,所以在用户单击链接以显示显示操作之前,我错误地将显示操作的部分包含在索引操作中。因此,我只用一个空 div 替换了 index 操作中的部分,并且仅当用户单击属性链接以通过 show 操作查看属性时,我才通过 ajax 将空 div 替换为部分。

于 2013-05-08T01:23:44.617 回答