在我的应用程序中,用户可以选择拒绝请求。我想让那个拒绝请求的用户可以选择说明原因,以便其他用户有更好的想法。
在我的展示页面上,我有一个打开引导模型的按钮
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModal">
Deny
</button>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Deny Request</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<%= form_for :pdform, url: deny_pdform_path, method: :put do |f| %>
<%= f.text_area :reason, placeholder: 'Why are you denying this request?', class: 'form-control' %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<%= f.submit 'Deny', class: 'btn btn-danger' %>
<% end %>
</div>
</div>
</div>
</div>
在此模型中,有一个表单可以更新pdforms reason
以了解它被拒绝的原因。
对于拒绝按钮,我有这个动作
def deny
if @pdform.save
if current_user.principal?
@pdform.principal_action = 'denied'
redirect_to root_path
elsif current_user.super?
@pdform.super_action = 'denied'
redirect_to root_path
end
end
end
为什么reason
不会与denied
的状态一起被放入数据库?我的许可证参数中有:reason
所以这不是问题。在模态中提交表单没有错误 - 原因是没有通过。有什么理由吗?
答案 0 :(得分:0)
我认为您实际上并未使用reason
操作中从表单传递的deny
。
此外,在分配save
或principal_action
后,您似乎没有致电super_action
。
尝试以下方法:
def deny
@pdform.assign_attributes(pdform_params) # or whatever you've called the permitted params
if current_user.principal?
@pdform.principal_action = 'denied'
elsif current_user.super?
@pdform.super_action = 'denied'
end
if @pdform.valid?
@pdform.save
redirect_to root_path
else
# handle errors from an invalid @pdform
end
end
看看是否有效并让我知道您的反馈!希望它有所帮助:)