2012-03-08 2 views
0

私はレールで作業するいくつかの基本的なAjaxを取得しようとしています。私はバナー、サイドバー、メインエリアを持つコモンメインページを持っています。サイドバーでは、ユーザーのサイトビュー(選択したネットワーク)の属性を変更するために、ドロップダウンメニューとボタンを追加しました。アイデアは、ネットワークが変更されたときに、AJAXの機能はネットワークが変更されたという事実を反映してサイトのリストを変更する必要があるということです。rails ajaxレンダリングはjavascriptでいっぱいの画面を出力します

問題はAJAXのコードが実行されるときに、私はJavaScriptをもかかわらず、私のブラウザウィンドウに表示されるのではなく、私は見てのラウンドstackoverflowのとGoogleを持っていた

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 } 

適切な要素を更新し、取得することですいろいろな提案をしようとすると、そのうちどれも現時点では動作していないようです。私のメインページには、この

<!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> 

のように見えるのJavaScript .rjs.jsファイルが が含まれている - すべてのヘルプは、だから、(単純化して)

おかげ

スティーブ

:-)いただければ幸いですpage.replace_html( "site_list_body"、:partial => "shared/network_site_list"、:locals => {:site_list => @site_list})

次のように電子コントローラのコードは次のとおりです。

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 

答えて

1

私はあなたのJavaScriptファイルがchange_network.js.erbと呼ばれ、提案のための

$("#site_list_body").html('<%= escape_javascript(render 'shared/network_site_list') %>'); 
+0

感謝の内側にされるべきだと思います。これはうまくいきません。出力は単純に$( "#site_list_body")です。html( '<! - render output - >'); –

+0

ファイル 'default.jsに' <%= javascript_include_tag:defaults%> 'という行が含まれています。このファイルにはこの '// = require jquery'とこの' // = require jquery_ujs'が含まれていますか? – Ashitaka

関連する問題