在Rails中形成一个表单?

时间:2014-02-10 03:18:08

标签: ruby-on-rails ruby forms devise

我有一个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 %>

有没有办法实现这一点,而无需移动表单外的删除学校按钮?它非常适合工作流程,但它会引起问题,因为它现在在技术上是编辑设计用户注册表单的一部分。有什么想法吗?

谢谢!

1 个答案:

答案 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