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
Спасибо!