如何通过单击Rubyonrails视图中的按钮来更新数据库中的多个表

How to update multiple tables in db with a single click of a button in view in Rubyonrails?

本文关键字:数据库 更新 按钮 Rubyonrails 视图 何通过 单击      更新时间:2023-09-26

我有一个模块有 3 个模型。在视图中,我已经获取了这些值,并在视图中以表格格式显示这些值。现在,如果我编辑了表中的值并单击"保存"按钮,则应在 db 中的相应表中更新相应的值,并返回到具有相同 id 的同一视图。我该如何完成此操作?

如果我在视图中的表中

添加了一行和相应的值,则这些值也应添加到各自的表中。

<table>
<%@task.each do |task|%>
<tr id="task-<%=task.id%>">
<td>task.name</td>
</tr>
<%@subtask.each do |subtask|%>
<tr id="subtask-<%=subtask.id%>">
....
</tr>
<% end %>
<% end %>
</table>

现在单击"保存"按钮,子任务模型应使用子任务进行更新,并且任务模型应使用任务进行更新。子任务模型引用任务模型,任务模型引用发票模型。虽然获取值发票 ID 是基础,但基于此提取任务和子任务。

我想根据Invoice_ID更新模型中的值。我不想重定向,因为我应该在同一个视图中,并且数据应该在数据库中更新。

你混淆了模型、视图、控制器的概念。如果你想通过视图编辑某些东西并想要更改数据库,那么你必须在你的视图中使用某种形式,你可以在其中编辑值,相应地,你必须在你的控制器中有一个方法来处理那个post请求。在控制器中,您必须将这些值保存在表中。例如,这里是将接受输入的视图

<h1>Update your profile</h1>
<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@user) do |f| %>
        <%= f.label :name %>
        <%= f.text_field :name, class: 'form-control' %>
        <%= f.label :email %>
        <%= f.email_field :email, class: 'form-control' %>
        <%= f.label :password %>
        <%= f.password_field :password, class: 'form-control' %>
        <%= f.label :password_confirmation, "Confirmation" %>
        <%= f.password_field :password_confirmation, class: 'form-control' %>
        <%= f.submit "Save changes", class: "btn btn-primary" %>
    <% end %>
    <div class="gravatar_edit">
      <%= gravatar_for @user %>
      <a href="http://gravatar.com/emails">change</a>
    </div>
  </div>
</div>  

其对应的控制器是用户控制器:

def edit
    @user = User.find(params[:id])
  end
 def user_params
    params.require(:user).permit(:name, :email, :password,
                                 :password_confirmation)
  end

其中姓名、电子邮件、密码是数据库中的表字段