simple_form_for:从参数中删除根模型名称

lew*_*rin 5 forms ruby-on-rails ruby-on-rails-3 simple-form

当我使用 simple_form_for @model 创建表单时,提交后的参数将所有属性分组在 params[model] 下。如何让 simple_form 删除此分组并直接发送(在 params root 下)?

<%= simple_form_for @user, do |f| %>
<%= f.input :name %>
<%= f.input :password %>
<%= f.submit %>
Run Code Online (Sandbox Code Playgroud)

现在,名称和密码属性通常会在 params[:user][:name]、params[:user][:password] 等下发送。如何让 simple_form 将这些属性发布为 params[:name]、params[:密码]等?

谢谢!
拉姆库马尔

ps:如果您想知道为什么我需要这个,我的应用程序的大部分是用作 API,并且我构建了一组方法来验证请求,该请求期望某些属性位于根中。在极少数情况下(忘记密码),我实际上需要提供一个表单,并且我正在寻找一种使用这些方法的方法。

dpa*_*age 1

我能想到的两种方法:

第一个是,不要使用simple_form来构建表单,而是手动或使用form_tag*_tag方法来完成。这些将使您能够更仔细地指定表单中使用的参数。

但是,如果您想保留simple_form,则让它调用不同的控制器操作。重构控制器,将逻辑剥离到单独的方法中。就像是:

class UsersController
  def create_from_api
    controller_logic(params)
  end
  def create_from_form
    controller_logic(params[:user])
  end
  def controller_logic(params)
    [actual work happens here]
  end
end
Run Code Online (Sandbox Code Playgroud)