我参考了这个Railscast,学习使用Ajax提交表单并更新div而不重新加载页面,但我在其中遇到了一些问题。
Ryan在index.js.erb文件中使用
我试图像Ryan在screencast中所做的那样,但与其显示搜索结果不同,我只想显示更新后的值。
在show.html.erb中,我有以下内容:
Ryan在index.js.erb文件中使用
$("#products").html("<%= escape_javascript(render(@products)) %>");
来更新#products
div。我不确定像@products
这样的实例变量是否适用于我的情况,或者我是否可以简单地将其替换为URL。我试图像Ryan在screencast中所做的那样,但与其显示搜索结果不同,我只想显示更新后的值。
在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
:todo => todo
来访问 @project.project_todos 变量。这不够吗?如果不够,那么#your code
注释中应该放什么?像ProjectTodos.all
这样的东西吗?感谢您的评论! - Trevan Hetzel