Здравствуйте, подскажите как разобраться с переменной.
Начну с начала. Есть например 100 блоков div на сайте. Каждый div - это место в кинотеатре. При нажатии на один из блоков его уникальный id записывается в переменную $arr. Таким образом, я реализую функционал для заказа и выбора сразу нескольких мест для бронирования.
$arr = [];
$link = $(location).attr('href').slice(36);
$('.btn-warning').each(function() {
$place_id = $(this).attr('id');
$arr.push($place_id);
});
$.ajax({
url: "/film_sessions/" + $link,
type: "get",
data: { data_value: JSON.stringify($arr) }
});
Дальше я получаю этот массив с помощью ajax запроса и отправляю в rails контроллер.
before_action :get_booking_place_array, only: [:show]
def get_booking_place_array
@test_test = params[:data_value]
puts "----------------------------------------------------------------------"
puts @test_test
puts "----------------------------------------------------------------------"
end
def show
...
@test_test = []
end
Вывод полученных данных планируется в модальном окне
<div id="data2">
<% @test_test.each do %>
<h1>hello</h1>
<% end %>
</div>
Проблема в том, что если в екшене show не объявить переменную
test_test и не присвоить ей пустой массив, то при заходе на страницу show будет ошибка - undefined method `each' for nil:NilClass.
Иначе - она постоянно будет равна пустому массиву. То есть если я выбираю несколько мест (dіv-ов) и захожу в терминал, то вижу там такие записи
["place_5","place_6","place_32"]
Я понимаю, что запись выводится благодаря строчке puts
test_test в методе get_booking_place_array.
Однако с помощью гема 'web-console' я могу проверить, что переменная
test_test на самой странице равняется пустому массиву( [] ).
Выходит, что в терминале в переменной данные есть, но на вьюхе они не распознаются, и выходит, что я использую 2 разные переменные. Как это исправить? )