【发布时间】:2012-12-04 06:21:53
【问题描述】:
我已经按照Railscast 通过 Ajax 提交表单并在不重新加载页面的情况下更新了一个 div,但我在其中一部分遇到了问题。
Ryan 在index.js.erb 文件中有$("#products").html("<%= escape_javascript(render(@products)) %>");,用于在提交表单时更新#products div。我很难理解像 @products 这样的实例变量是否与我的情况相关,或者我是否可以简单地将其替换为 URL。
我正在尝试在此截屏视频中与 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中有一行:<%= todo.due %>
所以在我的 index.js.erb 中,我目前有这个:$("#dueon").html("<%= escape_javascript(render("_duedate")) %>"); 但它显然不起作用。我是否必须在此处使用变量来代替_duedate?如果是这样,我将如何在控制器中进行设置?我的意思是变量代表什么?
另外,对于它的价值,部分正在正确呈现并显示 todo.due 值...只是在我提交表单时没有更新。
ProjectsController:
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
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-3