按钮,用于更改Rails中的数据库值

Button that changes database value in Rails

本文关键字:数据库 Rails 用于 按钮      更新时间:2023-09-26

Group show.html.erb的一部分看起来像:

  <% if !@pending.empty? %>
<div class="panel panel-default">
  <div class="panel-heading"> <h4>Pending Approvals for Group</h4></div>
    <table class="table", style="border-collapse: separate; border-spacing: 5px 1px;">
      <thead>
        <tr>
          <th>User Email</th>
          <th>Accept/Reject</th>
        </tr>
      </thead>
    <% @pending.each do |individual| %>
      <tbody>
        <tr>
          <td><%= individual.user.email %></td>
          <td>Accept/Reject (BUTTONS HERE)</td>
        </tr>
      </tbody>
    <% end %>
    </table>
  </div>
</div>
  <% end %>

我需要两个按钮来更改数据库列成员资格中的值,而不是Accept/Reject。Accept会将值设置为"member",Reject会将值设为"denied"。但是,此更改发生在GroupUser而非Group中,它是Groups和Users的联合表。

换句话说,接受按钮实质上将执行<% individual.update(membership: "member")%>,而拒绝按钮将执行<% individual.update(membership: "denied")%>

然后,该按钮将变为Approved或Denied。我尝试了各种选择,但似乎都不起作用。我不确定是否/如何使用javascript或jQuery来实现它。

这是我尝试创建"加入群组"请求功能的一部分,该功能允许其他用户请求加入私人群组并获得会员资格。

我只需要一个链接(按钮),它会将参数传递给控制器,控制器会根据这些参数进行更改,如下所示:

Group show.html.erb

        <td><%= link_to 'Accept', {:controller => "group",
                                   :action => "decision",
                                   :id => individual.group_id,
                                   :user_id => individual.user.id,
                                   :decision => "true"}, method: 'post', class: "btn btn-sm btn-success" %>

组控制器

  def decision
    @groupUser = GroupUser.where(group_id: params[:id], user_id: params[:user_id])
    if params[:decision] == "true"
      @groupUser.update(membership: "member")
      Homework.where(group_id: params[:id]).find_each do |hw|
        UserHomework.create(user_id: params[:user_id], homework_id: hw.id, admin: true, status: 'No attempt')
      end
    else
      @groupUser.update(membership: "denied")
    end
    redirect_to groupshow_path(:id => params[:id])
  end