@maxprof
Студент

Почему view не видит что находится в переменной?

Здравствуйте, подскажите как разобраться с переменной.
Начну с начала. Есть например 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 разные переменные. Как это исправить? )
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
Зачем вам тут before_action для одного экшена?
Попробуйте в show сделать так:
@test_test = params[:data_value] || []
Или во вьюхе проверяйте ваш
<% if @test_test.present? %>
.....
<% end %>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы