调用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>
答案 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 %>
现在可以使用了。