【问题标题】:Ajax create action: partial doesn't update without a page refreshAjax 创建操作:如果没有页面刷新,部分不会更新
【发布时间】:2023-04-07 17:14:02
【问题描述】:

我的索引页面上的 form_tag 中有一个文本字段,它应该使用 ajax 创建一个新的“图库”。不幸的是,我的部分(循环通过所有画廊)不会在没有页面刷新的情况下更新。

如果我提交两次它呈现提要的表单,直到倒数第二次。

我看到了几个 SO 帖子,但在这种情况下似乎没有给我任何答案:

rails-3-ajax-update-partial-doesnt-work-without-page-refresh

rails-3-ajax-newsfeed

请看我的代码:

控制器

controllers/admin/galleries_controller.rb

def create
  @galleries = Gallery.all
  @gallery = Gallery.create(:name => params[:name])
  respond_to do |format|
    if @gallery.save
      format.html { redirect_to admin_galleries_path }
      format.js
    else
      flash[:notice] = "Gallery failed to save."
      format.html { redirect_to admin_galleries_path }
    end
  end
end

观看次数

create.js.erb

# alert("ajax works"); rendered the alert box correctly
$("#galleries").html("<%= escape_javascript(render(@galleries)) %>");

管理员/画廊/index.html.erb

<%= render "form" %>
<ul id="galleries">
  <%= render @galleries %>
</ul>

管理员/画廊/_form.html.erb

<%= form_tag(admin_galleries_path, :method => :post, :remote => true) do %>
  <%= text_field_tag(:name) %>
  <%= submit_tag("Create") %>
<% end %>

管理员/画廊/_gallery.html.erb

<li><%= gallery.name %></li>

日志

Rendered admin/galleries/_gallery.html.erb (0.6ms)
Rendered admin/galleries/create.js.erb (1.4ms)
Completed 200 OK in 18ms (Views: 7.9ms | ActiveRecord: 3.6ms)

非常感谢您的帮助!

【问题讨论】:

    标签: jquery ruby-on-rails ajax ruby-on-rails-3


    【解决方案1】:

    我认为你需要交换这两行:

        @galleries = Gallery.all
        @gallery = Gallery.create(:name => params[:name])
    

    否则,@galleries 将不会包含新创建的Gallery

    【讨论】:

    • 没问题! (不要忘记接受这个答案,如果它有效!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2021-03-20
    • 2015-06-08
    • 1970-01-01
    • 2016-06-10
    • 2012-04-12
    相关资源
    最近更新 更多