0

我是 Rails newby,我今天大部分时间都在试图找到我的问题的答案,但我真的无法弄清楚。我认为这是很多人可能正在寻找直截了当的答案的常见问题,所以这里是:

我要做的就是使用一个collection_select 语句,将选定的值存储在@bno 之类的变量中,然后使用同一个变量过滤掉属于建筑物的属性。

这是我的代码:

<%= collection_select :property, :buildingnumber, Building.all, :streetno, :streetno, {prompt: "Building Number"},{:class => "form-control"}%> 

据我了解,通过查看 SO,params[:property][:buildingnumber]现在应该保留我的选择。

现在再往下,我有这个代码:

<% @properties.filter_by_building(buildingnumber: Property.find(params[:property][:buildingnumber])).each do |property| %>
             <div class="col-sm-6 col-md-4">
              <div class="thumbnail relative">
                <%= image_tag property.avatar.url(:medium) %>
                <div class="caption fixedtextheight">
                  <h4>Building No: <%= property.buildingnumber%></h4><h4>Property No: <%= property.number%></h4>

                  <p><h5>Rented: <%=property.rented%></h5></p>
                  <p>
                    <a type="button" class="btn btn-default navbar-btn" href=<%= edit_property_path(property) %>>Edit</a> <%= link_to "Delete", property, method: :delete, :class=>"btn btn-default navbar-btn", data: { confirm: "Deleting this property will delete ALL the tenants, expenses, and leases associated to it."} %>   
                  </p>   
                </div>
              </div>
             </div>

          <%end%>

这是我得到的错误:

属性#index 中的 NoMethodError 显示 /Users//Desktop/JR Buildings/jrbuilding/app/views/properties/index.html.erb 其中第 31 行提出:

用于 nil:NilClass 的未定义方法 `[]' 提取的源代码(在 #31 行附近):

                 <% @properties.filter_by_building(buildingnumber: Property.find(params[:property][:buildingnumber])).each do |property| %>

我对如何在视图中保存局部变量感到困惑,因为我来自 Java/Obj C 背景,我想做一些非常简单的事情,即根据用户选择的值过滤页面一个collection_select。我还需要弄清楚如何以某种方式更新页面。

无论如何,非常感谢有用的提示,在此先感谢您!

还想在我的属性模型中向您展示我的 filter_by_building 代码:

def self.filter_by_building(opts={})
    buildingNo = opts[:buildingnumber]
    building = Building.arel_table

    self.where(:buildingnumber => buildingNo)
end

非常感谢!

4

0 回答 0