2011-06-19 17 views
3

私はタイトルと説明を持つ投稿と呼ばれる足場を持っています。私のレイアウトでは、新しい投稿を作成するためのリンクがあります:remote => true。そのリモートリンクをクリックしてdivのコンテンツを変更して新しい投稿を作成できるようにするにはどうしたらいいですか?Rails 3.1 Ajaxの質問

答えて

7

使用するアクションをnewとしましょう。 フォームをリモートで投稿するときにレンダリングされるビュー/投稿にnew.js.erbというファイルを作成する必要があります。そのファイルには、新しい投稿を埋めたいdivに配置するjavascriptが含まれている必要があります。例として、含まれる可能性があります

# new.js.erb 
$('div#container').html("<p><%= escape_javascript(@post.title) %></p>").append("<p><%= escape_javascript(@post.content) %></p>"); 

JavaScriptは、ajax投稿が完了して新しい投稿が作成された直後に実行されます。次のことを覚えておいてください: - あなたはjQueryの を含める必要があります - あなたはposts_controllerでの.js形式をレンダリングする機能を指定する必要があり、

# posts_controller.erb 
def create 
    @post = Post.new(params[:post]) 

    respond_to do |format| 
     if @post.save 
     format.html { redirect_to(@post, :notice => 'Post created via non AJAX.') } 
     format.js # the actual ajax call 
     else 
     format.html { render :action => "new" } 
     end 
    end 
end 
のようなものを