2013-12-07 2 views
1

Я хочу создать переменную экземпляра RoR в my: javascript_tag, и я тоже хочу отобразить мой partail.Как создать переменную экземпляра внутри тега javascript для частичного рендеринга

'#{@workss}=' + all_filter_record; 
console.log('#{@workss}'); 
html_data = "#{j render :partial => 'other_portfolio', @workss} }"; 
$("#other_portfolio").html(html_data) 

Я пробовал много вещей, но он не работает

ответ

0

Имея код яваскрипта непосредственно в окне просмотра парциальное не лучший подход. Лучше попробуйте разделить логику JavaScript в файлах собственных активов. Посмотрите на: https://github.com/gazay/gon

1

Поскольку вы упоминаете :javascript Я предполагаю, что вы используете haml для визуализации вида.

Обычно вы должны установить @works в контроллере, то ваш взгляд код будет

:javascript 
    html_data = "#{j render :partial => 'other_portfolio', @works} }"; 
    $("#other_portfolio").html(html_data) 

Также обратите внимание, что если вы используете эту точку зрения в ответ на рельсы JSon вызова (например, link_to :remote => true, вы должны использовать :plain тег.

Если вы действительно хотите, чтобы установить переменную в вашей точки зрения, это, безусловно, возможно, но не внутри :javascript или :plain тега, но вы можете использовать его.

Как так:

- works = all_filter_record 
:javascript 
    html_data = "#{j render :partial => 'other_portfolio', works} }"; 
    $("#other_portfolio").html(html_data) 

Примечание в то время как можно установить переменные в представлении, это считается плохим тоном иметь на много кода в представлениях, и установка переменных экземпляра подавно (установка переменной экземпляра предполагает вы собираетесь использовать его в большем количестве просмотров/частичных данных, но тогда как вы узнаете, где установлены данные?). Поэтому, если вам нужна переменная экземпляра: установите ее в контроллер.

Смежные вопросы