このRailscastに従って、Ajax 経由でフォームを送信し、ページをリロードせずに div を更新しましたが、その一部に問題があります。
Ryan は、フォームが送信されたときに divを更新$("#products").html("<%= escape_javascript(render(@products)) %>");
するファイルを持っています。のようなインスタンス変数が自分の状況に関連しているかどうか、または単純に URL に置き換えることができるかどうかを理解するのに苦労しています。index.js.erb
#products
@products
このスクリーンキャストで Ryan と同じことをしようとしていますが、検索結果を表示する代わりに、更新された値を表示したいだけです。
show.html.erb には次のものがあります。
<% @project.project_todos.order("created_at DESC").where(:status => false).each do |todo|%>
<%= form_for todo, :remote => true, :"data-replace" => "#dueon" do |f| %>
<%= f.text_field :due %>
<%= f.submit :class => "primary", :value => "Add" %>
<% end %>
<div id="dueon">
<%= render "duedate", :todo => todo %>
</div>
<% end %>
パーシャル_duedate.html.erb
には次の 1 行があります。<%= todo.due %>
したがって、私の index.js.erb には現在これがあります:$("#dueon").html("<%= escape_javascript(render("_duedate")) %>");
しかし、明らかに機能していません。ここでの代わりに変数を使用する必要があり_duedate
ますか? もしそうなら、コントローラーでこれをどのように設定しますか?つまり、変数は何を表しているのでしょうか?
また、価値があるのは、パーシャルが正しくレンダリングされ、todo.due
値が表示されていることです...フォームを送信しても更新されないだけです。
プロジェクトコントローラー:
def show
@project = Project.find(params[:id])
# Display the form to create a new todo
@project_todo = ProjectTodo.new
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @project }
end
end