2015-11-02 39 views
1

我是Ruby on Rails的新手。我完成了教程和在線課程。我足夠了解我的開發環境,創建表,控制器,視圖等。然而,類和教程並沒有真正向您展示您在真正的軟件開發環境中可能需要使用的東西。Ruby on Rails - 可重複使用選擇條目頁

我正在將一段軟件轉換爲Ruby on Rails平臺。這是情況。我有一個銷售員控制器,有銷售員信息。然後我有一個處理客戶端信息的客戶端控制器。推銷員有很多客戶,客戶有一個推銷員。我已經編寫了Salesman對象的REST架構。現在,我必須創建客戶端。但是,在我能夠掌握控制器中的新動作之前,我必須先選擇一名推銷員。這個選擇的推銷員頁面將在許多其他場合需要,因爲我將有其他控制器,例如佣金,採購訂單等必須首先與銷售員聯繫起來。在實際進入控制器中的新動作之前,如何繼續編寫這樣的「臨時選擇」頁面。我們可以定義自定義操作後,我只是redirect_to傳遞推銷員id作爲參數的新操作?

+4

把那一段代碼在一個** **部分和渲染。部分文件正是用於此目的。 – Pavan

+0

好的,但我如何去了解事件的順序。我的導航中的「添加新客戶端」項應該去哪裏?現在它轉到new_accountant路線。它依次執行客戶端控制器中的新操作。部分被調用/呈現的地方在哪裏?然後,我如何將選定的推銷員傳遞給新的或創建操作? – Dan

回答

0

您需要設計類似於多租戶應用的應用。就你而言,銷售人員就像一個租戶。

這裏是概念設計:

  1. 附加current_id 屬性售貨員 cattr_accessor :current_id, instance_writer: false, instance_reader: false

  2. 在所有模型屬於銷售人員,定義默認範圍: default_scope { where(sales_man_id: SalesMan.current_id) }

  3. 確保當前的銷售員在e之前被設置執行任何取決於銷售人員的預先選擇的操作。實現這個目標有多種方法,也取決於你想提供什麼樣的用戶體驗。幾個選項:

    1. 只有在預先選擇了推銷員的情況下,才顯示新客戶端等導航。提供一個菜單選項來選擇一個推銷員。在該操作中設置SalesMan.current_id。

    2. 如果推銷員在許多後續交易中會有所不同,您可能希望在採取行動之前通過控制器實施推銷員選擇(工作流程的第1步)。例如,當用戶選擇新建客戶端導航選項時,before操作可以重定向到銷售人員選擇並設置標誌。 SalesMan控制器選擇的操作應重定向到新客戶端操作並確保設置適當的標誌(參數)以避免週期。定義一個新的控制器SalesManSelectionController,並將所有控制器的模型依賴於推銷員。

+0

多租戶應用程序(從我能讀的內容來看)似乎對於我想要做的事來說有點太複雜。我所尋找的解決方案就是在需要首先設置推銷員的控制器的任何新操作之前,我希望有一個推銷員選擇過程(可以對其進行排序和過濾的列表)。根據我的理解,我需要在客戶端控制器中使用before_action,例如:before_action:select_salesman,only:[:new]。問題是.. select_salesman方法來自哪裏?我在哪裏寫它?在幫手?在其中一個控制器中? – Dan

+0

對我評論的佈局抱歉。我還沒有掌握標籤,這會使我的評論出現換行符等 – Dan

+0

你可以詳細說明推銷員的選擇。是否像從下拉選擇框中按名稱選擇人一樣簡單?如果是這樣,那麼你只需在你的表格中包含那個應該選擇推銷員的表格。 – korada