рельсы отрисовывают коллекцию и местные жители

Я пытаюсь визуализировать партиал из файла js.erb, которому переданы как коллекция, так и локальная переменная. Все работает нормально, за исключением того, что я не могу получить доступ к локальной переменной в представлении. Я пробовал следующее:

<%= escape_javascript(render(partial: 'tasks/task', collection: @task_group.tasks_belonging_to, as: :task, locals: {testvble: "bob"})) %>
<%= escape_javascript(render(partial: 'tasks/task', collection: @task_group.tasks_belonging_to, locals: {testvble: "bob"})) %>
<%= escape_javascript(render(partial: @task_group.tasks_belonging_to, locals: {testvble: "bob"})) %>
<%= escape_javascript(render(@task_group.tasks_belonging_to, testvble: "bob")) %>

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

undefined local variable or method `testvble'

Просто для полноты, каждое из вышеперечисленных находится внутри следующего оператора в файле js.erb (в позиции xxxx):

$("#task-group-<%=@task_group.id%>").append("xxxx").hide().show('slow')

Это код части, вызывающей проблему:

<p>should be bob:<%= testvble %></p>

person mahi-man    schedule 05.03.2015    source источник
comment
Вы используете Rails 4? Последний из 4 операторов рендеринга, который вы показываете, должен работать. Можете ли вы опубликовать фрагмент кода из части, в которой вы ссылаетесь на testvble?   -  person J Plato    schedule 05.03.2015
comment
Да, я использую Rails 4.2. Я отредактировал приведенное выше с помощью кода из части, вызывающей проблему   -  person mahi-man    schedule 05.03.2015
comment
Думаю, я нашел проблему. Сам партиал рекурсивно вызывает себя, когда есть дочерние задачи для отображения, и партиал не передавал переменную дочернему элементу. Так что да, нижний синтаксис работает (другие тоже могут работать, но я буду придерживаться самого лаконичного). Спасибо!   -  person mahi-man    schedule 05.03.2015
comment
Я сделал это. Рад, что ты его нашел - удачи!   -  person J Plato    schedule 05.03.2015


Ответы (1)


Нижний синтаксис действительно правильный, как было предложено Дж. Платоном. Моя проблема заключалась в том, что партиал рекурсивно вызывал себя, если отображались дочерние задачи. При рендеринге дочерней задачи (задач) локальная переменная не передавалась.

person mahi-man    schedule 05.03.2015