在控制器#show Rails上发送帖子请求

时间:2017-12-20 16:19:06

标签: ruby-on-rails

在我的应用程序中,用户可以选择拒绝请求。我想让那个拒绝请求的用户可以选择说明原因,以便其他用户有更好的想法。

在我的展示页面上,我有一个打开引导模型的按钮

<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">&times;</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所以这不是问题。在模态中提交表单没有错误 - 原因是没有通过。有什么理由吗?

1 个答案:

答案 0 :(得分:0)

我认为您实际上并未使用reason操作中从表单传递的deny

此外,在分配saveprincipal_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

看看是否有效并让我知道您的反馈!希望它有所帮助:)