我在一个名为 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>
所以只有当我试图将部分放在我的索引页面中时它才不起作用。我究竟做错了什么?