2012-02-29 53 views
1

將用戶個人資料模型及其表單拆分爲多個可單獨更新的子表單的最佳方法是什麼?將1個大表單拆分爲多個子表單

像 *基本信息

  • 詳情詳情
  • 我的照片
  • 我的興趣

你只能有1個編輯操作,所以這將是處理的首選方式這個?

回答

1

所以實際上,你真正想要做的是爲用戶創建一組嵌套的資源,以便你可以分別對待每一個。

resources :users do 
    resource :basic_details 
    resource :detailed_details 
    resources: :photos 
    resources: interests 
end 

,讓你喜歡的路線:edit_user_basic_details(@user),這樣的話,你可以有打這些子資源的更新操作的形式,這樣的:

<%= form_for :basic_details, url: user_basic_details_path(@user) do |form| %> 
    <%= form.text_field :name %> 
    <%= form.submit %> 
<%= end %> 

這種方式,你可以設置控制器一樣這樣的:

class BasicDetailsController < ApplicationController 
    def edit 
    @user = User.find(params[:user_id]) 
    end 

    def update 
    @user = User.find(params[:user_id]) 
    @user.update_attribures(params[:basic_details]) 
    end 
end 

這是實施這是一個非常快速和骯髒的方式,但它的意思告訴你有上手。您不必將表單和控制器視爲僅編輯數據庫中的表格,有時更方便地將其中一個模型的特定部分視爲可以單獨編輯的自己的資源。

希望這能讓你開始。

1

如果你只是更新你可能只能使用標準的編輯/更新操作,只是製作更小的表單。只需像往常一樣創建表單,只需簡單地包含所需的字段,並讓它們都指向正常的更新操作即可。

如果您正在從您可能會遇到與驗證不同領域的問題較小形式的新用戶,但如果你只是更新則驗證鉛丹需求應該已經滿足

+0

什麼,如果它不是更新,但新形式? – vipin8169 2016-05-25 12:04:06

相關問題