私は多くの画像を持つページを持っており、それぞれに関連するテキストボックスがあり、その画像にタグを付けることができます。各画像とテキストボックスは部分的な表示でレンダリングされます。現在、私はタグを更新することができ、すべてが完全なページリフレッシュを通じて正しく動作します。私はAJAXでこれをすべてやってみたいと思っていますが、それに問題があります。ここでAJAXで部分図を更新する
は、フォームのコードが部分図である:私は画像のタグを追加するコントローラでupdate_tags方法:で
<% @images.each do |image| %>
<div id="image_#{image.id}">
<%= render :partial => "image_tag", :locals => { :image => image } %>
</div>
<% end %>
:
<%= image_tag image.src %>
<%= form_tag :controller => "images", :action => :update_tags, :remote => true, :image => image.id do %>
<td><%= label_tag "Tags:" %></td>
<td><%= text_field_tag :tags, image.tags %></td>
<td><%= submit_tag "Submit" %></td>
<% end %>
と部分を呼び出し、メインフォームDBに保存し、そのイメージの部分的なビューをリロードします。ここで
は、コントローラのリダイレクトコードです:
respond_to do |format|
format.js
format.html { redirect_to :back, :remote => true }
end
そしてupdate_tags.js.erb:
$("#image_#{image.id}").html("<%= escape_javascript(render :partial => 'image_tag', :locals => {:image => image}) %>");
現在は機能的に取り組んでいるが、ないAJAXの魔法が起こっていません。私はまだRailsとjQueryを学んでいるので、どんな助けでも大歓迎です。私は関連するすべてのコードを含んでいると思いますが、私が提供すべき他のものがあれば教えてください。ありがとう!
私は実際にこの質問を投稿した後にあなたが言っていることを正確に自分のdiv IDを更新しました。これは私の仕事で更新されました。私は形式をコメントアウトしました。htmlの行があり、フォームに何かを投稿すると、HMTLがレンダリングされません。 URLとして「http:// localhost:3000/images/update_tags?remote = true&image = 1」が表示され、Railsサーバーに送信されたパラメータが表示されますが、HTMLはレンダリングされません。これは私のjavascriptが呼び出されていないということですか? JSファイルは、コントローラで呼び出されるメソッドの後に名前が付けられるはずです(私の場合はupdate_tags.js.erb)。 – jnevelson
私の更新された答えを見て、私はあなたがRailsのjqueryアダプタを失っている可能性があると思います。これは、RailsがAJAX呼び出しを処理する方法です – iwasrobbed