2010-03-05 63 views
3

一想到即將建成,將(從用戶的角度)的訂單的最佳途徑的動態數:形成項目

  • 允許添加多個項目。
  • 每個項目都有名稱,作業類型下拉和文件上傳。
  • 用戶可以添加或刪除項目。
  • 用戶必須提供至少一個項目。
  • 所有的項目都應該被驗證(例如:Name,JobType和File是必需的)。
  • 當他點擊提交時,應該創建一個包含所有項目的訂單。

因此模型的樣子:User -1---*-Order-1---*- OrderItem-*--1-JobType。另外,OrderItem包含多個屬性,比如說name,file


現在我想要儘可能瘦的控制器。更好地與像「標準」代碼:

class OrdersController < ApplicationController 
    def create 
    @order = Order.new(params[:order]) 
    if @order.save 
     redirect_to account_url 
    else 
     flash.now[:error] = "Could not save Order" 
     render :action => "new" 
    end 
    end 
end 

最有趣的事情是如何視圖應該使自動導軌結合貼到正確的對象的所有值?

現在我不擔心JavaScript的退化,而是要添加項目的模板,並將所有與驗證(可能作爲部分)鏈接起來。

我希望模板看起來像下面的模板,但不確定。

<input type='text' name='order[order_items[name[]]][]' /> 
<select name='order[order_items[job_type[]]][]'>...</select> 
<input type='file' name='order[order_items[file[]]][]' /> 

我必須克隆這個模板,以便使用JS添加項目。


所以答案應該:

  • 包括演示視圖或它的一部分:
    • 修正後值的結合;
    • 正確驗證所有項目;
  • 包含模型的相關部分。
  • 包含對控制器IF的更改,並且僅在必要時才進行更改。
  • (不需要的JavaScript)

我非常希望看到一個樣品,如果有人(在GitHub上也許某處)知道一個。

而最後一個註釋,,請在發佈前檢查您的解決方案。

謝謝,
德米特里。

回答

5

不能直接回答這個問題,但這裏有一些來源,讓你有:

就我個人而言。你的問題是要求某人爲你做你的工作。如果我在上班,我很樂意發佈一個答案,以滿足您的所有需求。

+2

託尼,我給了,我希望有人做的工作對我的感覺很抱歉。我沒有這樣的意圖。我只是想避免對答案進行可能的猜測,只是得到清楚的答案。這樣的答案是你的。很明顯,因爲它確實提供了確切的答案我看到的 - railcasts 196(和197)。非常感謝。 – 2010-03-06 04:01:24