Как загрузить партиал внутри партиала?

Я пытаюсь запустить запрос AJAX при загрузке моей страницы. Я предполагаю, что это было бы лучше всего с моего контроллера.

Сначала открываю новую страницу..

def text_tabs_nav
end

Эта страница имеет возможность загружать с помощью AJAX два разных фрагмента. Я хочу загрузить один из них по умолчанию.

Вот я и подумал может это..

def text_tabs_nav
  respond_to do |format|
    format.html
    format.js
  end
end

И в моем text_tabs_nav.js я написал это:

== $("#content").html("#{ escape_javascript(render :partial => 'about_us') }");

Но javascript не загрузился. Я использую тот же javascript для загрузки вещей после загрузки страницы, и он отлично работает.

Кто-нибудь знает, как я могу загрузить частичное ( text_tabs_nav ) с частичным AJAX по умолчанию, загруженным внутри ( about_us )?

Спасибо!


person Trip    schedule 26.07.2010    source источник


Ответы (2)


Он не анализируется, потому что находится в файле vanilla js. То, что вы хотите, это

text_tabs_nav.js.erb

person Jamie Wong    schedule 26.07.2010
comment
Ваниль? Хм... мой файл называется text_tabs_nav.js. Я переключил свой контроллер на format.js.erb и файл на него, и он не отобразился. Возвращен неопределенный метод `erb' для #‹Proc:0x2e8914c› - person Trip; 26.07.2010
comment
Я не понимаю... Ваш файл ДОЛЖЕН называться text_tabs_nav.js.erb. В противном случае rails предполагает, что это обычный файл javascript, в котором нет ruby ​​для обработки. Строка format.js остается прежней. Всякий раз, когда вы что-либо визуализируете, он будет искать этот файл (например, text_tabs_nav.js) без расширений или с любым расширением шаблона (.erb, .haml). - person Jamie Wong; 26.07.2010
comment
А.. Я забыл упомянуть, что работаю на haml/sass. Что на шаг ближе, я переименовал его в text_tabs_nav.js.haml . Поэтому, если я удалю format.html из моего контроллера, он загрузится в правильном содержимом. Но при этом он фактически не загружает AJAX на страницу. - person Trip; 26.07.2010
comment
Я настоятельно рекомендую вам использовать erb для javascript. Учитывая, что вы используете haml, я не знаю, почему у вас == в начале строки. - person Jamie Wong; 27.07.2010
comment
Я ценю рекомендации. Я предполагаю, что HAML JS не нуждается в ==. Я думаю, проблема, вероятно, в том, что ajax, необходимый для загрузки страницы, должен произойти после загрузки страницы. И поскольку я хочу, чтобы это было по умолчанию, я не хочу помещать его в само представление, поскольку туда также должны быть загружены другие частичные элементы. Я ценю ваши комментарии, тем не менее - person Trip; 27.07.2010
comment
Если ваш файл называется text_tabs_nav.js.haml, вам просто нужно поставить фильтр :javascript перед кодом. Код Ruby будет выполняться внутри расширений #{}. См. пример на railsnotes.com/474-javascript-haml. - person bjg; 27.07.2010

Ну, в славном пламени поражения, я бросил контроллер, добавив, на мой взгляд, обычный вызов.

:javascript
  $("#content").html("#{ escape_javascript(render :partial => 'about_us') }");

Задача решена.

person Trip    schedule 27.07.2010