2011-04-26 11 views
0

私はjqueryの初心者です。rails-json-jqueryは表示ファイルの内容を表示していません

私は以下の通りからコントローラへの呼び出しがあります:関数内から、私はいくつかの命令を実行し、その後

jQuery('#search_form').submit(function(){ 
     jQuery.post("topics/topics_details", { 
      'topic_name': jQuery('#topic_name').val(), 
     }, function(response){ 
     }, 'json'); 

     alert("hello"); 
     return false; 
    }); 

を。

def topics_details 
    @tag=params[:topic_name] 
    puts "\n\nTopic = ",@tag 
    end 

はその後、私の代わりにアラートが表示され、ビューファイル(topics_details.html.erb).But、残念ながらそのビューが(レンダリングされたコンソールで、しかし。)表示されていないを実行する必要があります。事前に

部分的なファイルを呼び出すためにどのように?render_to_stringは/ JSON uは基本的な例を与えることができます...

は誰も、助けてください... ありがとう...問題の

+0

、それは知っているのは難しい:フォルダとあなたはただ、次のjs.rjsファイルを持つことができ、このトピックでは、部分的と呼ばれる「_topics.html.erb」に命をDIVていることを確認してくださいあなたが実際にやろうとしていること。 –

答えて

0

あらゆる種類あなたが実際にやろうとしていることを知るのは難しいです。あなたのアラートはjQuery.postコールの外にあるので、常に発生します。なぜそこに警告がありますか?あなたはレスポンスを何もしないので、次のいずれかを行う必要があります:a)関数(レスポンス)ブロックに何かを入れるか、b)レスポンスブロックを削除して、レスポンスを扱うようにします。例えば、topics_details.js.rjsファイルapp/views/topicsフォルダー。通常、これはページ上のdivの内容を特定の部分に置き換えます。このように、ビューファイルを実行するのではなく、評価してページの一部のコンテンツを置き換えます。

フォームの提出をキャッチして、ajaxリクエストを送信するのではなく、単にリモートフォームにするのはなぜですか?そうすれば、自動的にajaxを使ってサブミットし、コントローラーは通常の方法でそれを処理し、.htmlフォーマットブロックではなく.jsフォーマットブロックで応答します。デフォルトでは、関連するビューフォルダ内の.js.rjsというファイルが検索されます。例:

<%= form_remote_tag :url => '/topics/topics_details' do %> 
    usual form stuff here - fields, submit etc 
<% end %> 

これは/ topics/topics_detailsにajaxリクエストを行います。これは通常の動作を行います。たとえば、Topicオブジェクトの配列を保持する@topicsという変数を更新することができます。これらは、あなたのページのidに 'topics'というdivでリストアップすることができます。だから、あなたはそのdivをリフレッシュする必要があります。ここではあらゆる種類の問題

#in app/views/topics/topics_details.js.rjs 
@page.replace "topics", :partial => "topics/topics.html.erb" 
+0

こんにちは、.js.rjsファイルだけが.html.erbファイルの代わりにレンダリングされます。 – jissy

+0

こんにちは、トピック検索の一環として、これをやっています。トピックが既に存在する場合は、topic_detailsページにリダイレクトします。それ以外の場合、そのトピックは新しいトピックとして追加する必要があります.2番目のダイアログボックスは、私は

スタイルを変更することはできません。あなたは助けることができます.. – jissy

関連する問題