我有一个Devise"编辑用户"在我的Rails应用程序中形成。用户还包含school_id。在我的编辑用户表单上,我有一个部分显示用户订阅的学校。在学校名称旁边,我有一个按钮,用户将school_id设置为nil。但是,由于这实际上是一个带有隐藏字段的表单,因此用户可以"保存更改"在编辑用户表单上,它会将school_id设置为nil,因为我在页面上有另一种形式。
伪代码:
edit user information
School: schoolname [button to remove school]
edit more user information
[Submit changes]
取消学校的按钮:
<% if current_user.school %>School: <b><%=link_to current_user.school.name, current_user.school %></b>
<%= form_for(@user) do |f| %>
<%= f.hidden_field(:school_id, :value => nil) %>
<%= f.submit "Remove school", class: "btn btn-danger btn-small" %>
<% end %>
有没有办法实现这一点,而无需移动表单外的删除学校按钮?它非常适合工作流程,但它会引起问题,因为它现在在技术上是编辑设计用户注册表单的一部分。有什么想法吗?
谢谢!
答案 0 :(得分:1)
您可以通过控制器中的操作来实现它。
例如在视图中:
<%= link_to 'Remove school', user_path(@current_user), :method => :delete, :class => "btn btn-danger btn-small" %>
在控制器中:
def destroy
@current_user.update_attribute(:value, nil)
respond_to do |format|
format.html{redirect_to :back}
end
end