Я пытаюсь отобразить частичный из файла js.erb, который имеет как коллекцию, так и локальную переменную, переданную ей. Все работает отлично, за исключением того, что я не могу получить доступ к локальной переменной в представлении. Я пробовал следующее:rails render collection и locals
<%= 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 (в положении хххх):
$("#task-group-<%[email protected]_group.id%>").append("xxxx").hide().show('slow')
Это код в частичное возникновение проблемы:
<p>should be bob:<%= testvble %></p>
Вы в Rails 4? Последний из 4 выведенных выписок, которые вы показываете, должен работать. Можете ли вы опубликовать фрагмент кода из частичного, где вы ссылаетесь на testvble? –
Да, я на Rails 4.2. Я отредактировал выше с кодом из частичного, вызывающего проблему. –
Я думаю, что нашел проблему. Партия сама вызывает себя рекурсивно, когда есть дочерние задачи для отображения, а частичное не передавало эту переменную дочернему. Итак, да, нижний синтаксис работает (другие могут работать тоже сейчас, но я буду придерживаться самого кратким). Благодаря! –