2011-12-10 4 views
3

私はWeb開発の初心者です。Rails 3.0.10 AJAXの問題、create.js.erbファイル

私は私がにAJAXを実装しようとしているmicropostフォームを持っているのRails 3.0.10

を使用して、私の最初のアプリを作成しています。

コントローラを正しくセットアップしました(私は信じています)、マイクロポストフォームに:remote => trueを追加しました。私は期待どおりに動作します

$("#microposts").html("<p>Hello world!</p>") 

を置けば

Microposts Controller 

def create 
     @user = User.find(current_user.id) 
     @micropost = current_user.microposts.build(params[:micropost]) 
     if @micropost.save 
     flash[:success] = "Created micropost" 
     respond_to do |format| 
     format.html { redirect_to @user } 
     format.js 
     end 
     else 
     render 'users/show' 
     end 
    end 

問題は、テストとして

ビュー/マイクロポストで、create.js.erbファイルです。

インスタンス変数を使ってRubyコードを埋め込んでも、それも機能します。

しかし、私は

$("#microposts").html("<%= render @microposts %> ") 

を置けば、それは何もしません。

実際、どのような方法も試しても、何もしません。

これらが含まれている私のJavaScriptファイルです:

/javascripts/jquery.js 
/javascripts/jquery_ujs.js 
/javascripts/jquery.min.js 
/javascripts/application.js 

すべてのヘルプは大幅に私は今しばらく困惑してきた、高く評価されるだろう。

答えて

2

あなたが作成するアクションで@microposts(コレクション)をロードしていません。

だから、あなたのような何かを経由して、それを設定する必要がありますするか必要があります。

@microposts = current_user.microposts 

しかし、別のDBの呼び出しを行う必要は本当にありません。あなたの#microposts要素に新しい項目を追加する(またはプリペンドする)ことをお勧めします。次のようなものがあります。

$("#microposts").prepend("<%= escape_javascript(render '_micrpost_item') %>"); 

この部分は、作成アクションから@micropostオブジェクトを使用できるようになります。

+0

ありがとうございます。私はそれをちょっと変えることになったが、これは正しい方向に私を指摘した。 – veritas1

0

は、代わりにこれを試してみてください:

$("#microposts").html("<%= escape_javascript(render @microposts) %> "); 
+0

ありがとう、私は試みましたが、動作しません。 – veritas1