我有一个模块的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更新模型中的值。我不想重定向,因为我应该在同一个视图中,数据应该在db中更新。
答案 0 :(得分:0)
你混淆了模型,视图,控制器概念。 如果要在视图中编辑某些内容并想要更改数据库,则必须在视图中使用某种形式来编辑值,相应地,您必须在控制器中使用一种方法来处理该发布请求。 在控制器中,您必须将这些值保存在表中。 例如,这里是将采取输入的视图
<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
其中name,email,password是数据库中的表字段