Rails - 使用 Ajax 和 :remote => true 更新 div

2023-12-12

我已经关注了这个铁路广播公司通过 Ajax 提交表单并更新 div 而不重新加载页面,但我在处理其中一部分时遇到了问题。

瑞安有$("#products").html("<%= escape_javascript(render(@products)) %>"); in an index.js.erb文件来更新#productsdiv 提交表单时。我正在努力了解实例变量是否像@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值...它只是在我提交表单时没有更新。

项目控制器:

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

Try this

在你的控制器动作中,(比如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')) %>")

然后在部分内部,您可以访问新的@todos实例变量

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails - 使用 Ajax 和 :remote => true 更新 div 的相关文章

随机推荐