在单个页面上处理单个资源的多个表单

时间:2017-09-21 16:54:56

标签: ruby-on-rails

我的rails应用程序上有一个页面,用户可以在其中查看和更改其信息。

出于UX原因,该页面分为几种形式。 每个表单用于更新一组特定的详细信息,例如,有一个表单用于一般详细信息(名称,电子邮件地址),一个用于更改密码等。

目前,我只有一个表格,但我想补充一些其他表格。处理这个问题的最佳方法是什么?我有两个主要的猜测,但无法弄清楚哪一个最适合。

1 - 将“id”与每个表单相关联,并在我的用户控制器中的“update”操作中添加一些if else语句。

2 - 在我的控制器中创建新功能(update_password,update_general_info)并使用路由。

什么是最好的解决方案和时尚的设计方法?

干杯

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是为每个表单的提交按钮指定名称和值。

<%= f.submit 'Update Password' %>

将呈现以下HTML:

<input type="submit" value="Update Password" name="commit" />

然后在控制器中,您可以添加caseif来检查该参数。

def update
  case params[:commit]
  when "Update Password"
    # Update the Password
  when "Update Address"
    # Update the address
  else
    # Default case
  end

  #...
end

这里最大的缺点是它将显示HTML与控制器耦合 - 你无法在不更新控制器的情况下更改按钮文本。