ruby-on-rails – Rails – 使用Ajax更新div并且:remote =>
我已经按照
Railscast关于通过Ajax提交表单并更新div而不重新加载页面,但我遇到了一部分问题.
Ryan有$(“#products”).html(“<%= escape_javascript(render(@products))%>”);在index.js.erb文件中,在提交表单时更新#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 解决方法
试试这个
在你的控制器动作中,(比如sample_action) def sample_action @todos = #your code respond_to do |format| format.js end end 你有一个sample_action.js.erb $("#dueon").html("<%= raw escape_javascript(render(:partial => 'duedate')) %>") 然后在partial中,你可以访问新的@todos实例变量 HTH (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |