Я пытаюсь получить базовый ajax, работающий на рельсах. У меня есть главная страница comon, с баннером, боковой панелью и основной зоной. На боковой панели я добавил раскрывающееся меню и кнопку (неуклюже, я знаю, но вы должны начать что-то), чтобы изменить атрибут представления пользователя на сайте (выбранная сеть). Идея заключается в том, что при изменении сети функциональность AJAX должна изменить список сайтов, отражающих тот факт, что сеть изменилась.rails ajax render выдает экран, полный javascript
Проблема заключается в том, что при выполнении кода AJAX, я получаю Javascript появляется в моем окне браузера, а не обновлять соответствующий элемент
try {Element.update("site_list_body", "<-- the correct html appears here -->");} catch (e) { alert('RJS error:\n\n' + e.toString());
alert('Element.update(\"site_list_body\", \"<--same html code here too-->");'); throw e }
Я имел взгляд вокруг StackOverflow и Google, и, несмотря на пытаясь найти различные предложения, ни один из них, похоже, не работает в данный момент. Любая помощь будет оценена :-)
Благодаря
Стив
Так (с упрощениями) - моя главная страница выглядит следующим образом
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>Networks: <%= controller.action_name %></title>
<%= stylesheet_link_tag 'frontier', 'menus' %>
<%= javascript_include_tag :defaults %>
</head>
<body id="frontier-network">
<div id="banner"
<--banner and menu stuff -->
</div>
<div id="columns">
<div id="side">
<-- some other stuff -->
<div id="site_list_body">
<%= render :partial => "shared/network_site_list", :locals => {:site_list => @site_list} %>
</div>
<div>
<% form_for :user, :url=>{:controller=>'users', :action => :change_network} do |f| %>
<-- this is where the dropdown list etc goes -->
</div>
</div>
<div id="main">
<%= yield :layout%>
</div>
</div>
.rjs.js файл Javascript содержит page.replace_html ("site_list_body",: partial => "shared/network_site_list",: locals => {: site_list => @site_list})
И th код электронного контроллера заключается в следующем:
def change_network
@user = User.find(session[:user_id])
new_network_id=params["user"]["current_network_id"]
@user.current_network_id=new_network_id.to_i
@site_list=Site.find_all_by_network_id(@user.current_network_id)
respond_to do |format|
format.js
end
end
Спасибо за предложение. Боюсь, что это не сработает. Результат - просто $ ("# site_list_body"). Html (''); –
Вы включаете файл defaults.js с этой строкой '<% = javascript_include_tag: defaults%>'. Включает ли этот файл этот '// = require jquery' и этот' // = require jquery_ujs'? – Ashitaka