AJAX 请求页面未重新呈现后

时间:2021-04-26 10:30:30

标签: ruby-on-rails ruby ajax

我在 blogs_controller 中的帖子可以通过天赋选择。可以通过下拉菜单选择风格。当我选择任何其他选项时,页面正在使用 ajax 重新加载并且一切正常,但是如果我按下提交按钮,它应该发送空 :flair 值并再次呈现页面和表格,但它发送,我查看如何选择所有帖子,但没有任何变化,为什么? 我真的无法理解。

#blog_controller.rb
  def index

    @blogs = Blog.order("created_at desc")

    if !(params[:flair].blank?)
      @blogs = @blogs.where(:flair => params[:flair])
    end
    respond_to do |format|
      format.html
      format.json
    end
  end

  def blog_params
      params.require(:blog).permit(:name, :title, :content, :flair)
  end
#index.html.haml
%h1 Listing blogs

= form_with method: :get do |f|
  = f.select :flair, @flairs, {},{onchange: "this.form.submit()"}
  = f.submit 'Clear', params: {flair: ""}

= render 'table'
%br
#_table.html.haml
%table#table
  %thead
    %tr
      %th Name
      %th Title
      %th Content
      %th Flair

  %tbody
    - @blogs.each do |blog|
      %tr
        %td= blog.name
        %td= blog.title
        %td= blog.content
        %td= blog.flair
        %td= link_to 'Show', blog
        %td= link_to 'Edit', edit_blog_path(blog)
        %td= link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' }

1 个答案:

答案 0 :(得分:0)

这是因为您的请求正在等待 JS 响应,并且由于您没有在控制器中处理它,所以它默认为 HTML。除非您在提交时重新加载页面,否则 HTML 不会重新呈现,因此即使调用了控制器方法,UI 中也“没有任何反应”。