Rails:渲染未更新页面,但正在响应中返回

时间:2019-11-21 23:55:32

标签: ruby-on-rails ruby

调用render时,视图未更新,但是,在网络选项卡中我确实注意到,向我发出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>  

请注意“ hello”类。

当我发出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>

2 个答案:

答案 0 :(得分:1)

仅在收到新请求时才渲染Flash,而您不会使用render进行渲染。相反,您应该使用flash.now[:notice]使其在渲染中显示。

答案 1 :(得分:0)

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

感谢以下问题的帮助:Rails render not showing in browser, despite positive server reply

我已经改变

<%= form_with do %>

<%= form_with local: true do %>

现在可以使用了。