Rails: сохранение значения, выбранного в collection_select в представлении

Я новичок в Rails, и я потратил большую часть сегодняшнего дня, пытаясь найти ответ на мою проблему, но я не мог понять это. Я думаю, что это распространенная проблема, которую многие люди могут искать простой ответ, так что здесь идет:

Все, что я хочу сделать, это использовать инструкцию 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%>

Вот ошибка, которую я получаю:

NoMethodError в Properties#index Показывает /Users// Рабочий стол /JR Buildings/jrbuilding/app/views/properties/index.html.erb, где поднялась строка #31:

undefined метод `[]'для nil:NilClass Извлеченный источник (около строки #31):

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

Меня смущает то, как мне следует сохранять локальные переменные в представлениях, поскольку я исходил из фона Java/Obj C и хочу сделать что-то очень простое, а именно: отфильтровать страницу на основе значения, выбранного пользователем в коллекция_выбор. Также мне нужно выяснить, как обновить страницу как-то.

В любом случае полезные советы очень ценятся, заранее спасибо!

Также хочу показать вам мой код filter_by_building в моей модели свойств:

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

    self.where(:buildingnumber => buildingNo)
end

Спасибо!

0 ответов

Другие вопросы по тегам