首页 > 解决方案 > Rails:渲染不更新页面,但它正在响应中返回

问题描述

但是,当调用render视图未更新时,我确实在网络选项卡中注意到,在对我的 POST 路由发出 POST 请求后,它返回 HTML 作为响应,并且响应具有我呈现的错误消息。它只是不更新​​页面。我不知道该怎么做。

在我的 POST 操作中,我强制调用它

    flash.now[:notice] = responseMessage
    render :deactivate_show

呈现动作:

  def deactivate_show
    @user = User.find(params[:id])
    authorize! :deactivate_user, @user

    if current_user.role == "admin"

      if @user.broker?

        @companyUsers = User.where(parent_id: @user.id)
        @properties = Property.where(user_id: @user.id)
        .or(Property.where(user_id: @companyUsers.ids))

        elsif @user.broker_manager?

          # get all agents in company
          # exclude current user
          # get broker
          @companyUsers = User.where(parent_id: @user.parent_id)
          .where.not(id: @user.id)
          .or(User.where(id: @user.parent_id))

          @properties = Property.where(user_id: @companyUsers.ids)
          .or(Property.where(user_id: @user.parent_id))

        else @user.agent?

          @properties = @user.properties

          if @user.parent_id?
          @companyUsers = User.where(parent_id: @user.parent_id)
          .where.not(id: @user.id)
          .or(User.where(id: @user.parent_id) )
        else
          # dealing with owner.
          @companyUsers = User.where('role IN (2,4,1)')
          .where.not(id: @user.id)
        end

      end


    else

    end


  end

它呈现了我拥有的显示表单的视图。

我添加到我的显示视图:

 <div class="messages">
<% flash.each do |key, value| %>

  <div class="hello"><%= value %></div>
<% end %>
</div>  

注意“你好”的类。

当我发出 POST 请求时,网络选项卡中的响应有通知:

从 POST 请求响应中呈现:

<div class="messages">

  <div class="hello">testing errors</div>
</div>

编辑:这是表格:

    <div class="form-wrap">
        <%= form_with do %>
            <%= button_tag( id: 'button--submit', class: 'button button--secondary') do %>
                <i class="icon-arrow-right"></i>
                <span>Deactivate</span>
            <% end %>
        <% end %>
    </div>

标签: ruby-on-railsruby

解决方案


好吧,因为我没有分享我的表格,所以没有人能提供实际的答案。我使用的是form_with,默认情况下显然会执行 AJAX,因此不会渲染视图。

感谢这个问题的帮助:Rails render not shown in browser, 尽管服务器回复是肯定的

我变了

<%= form_with do %>

<%= form_with local: true do %>

现在它可以工作了。


推荐阅读