2012-06-15 65 views
0

當代碼看到下面幾行:Rails的問題渲染調用

<%= render :partial => 'ingredients/form', 
      :locals => {:form => recipe_form} %> 

我不知道什麼是真正發生。

  1. 我已經注意到renderRenderingHelper的一部分。如何知道在寫作時可以使用哪個對象?我如何使用它,而RenderingHelper前綴作爲在Java中(即RenderingHelper.render)。我在表單視圖中繼承它嗎?

  2. 因爲我知道Java和C#,我已經尋找ingredients/form並在代碼無法找到它。我猜它是通過配置規則的慣例的一部分。它是什麼?它在哪裏定義?

  3. 關於:locals => {:form => recipe_form}一行,是發送給render的參數嗎?這是雙重任務嗎?什麼是=>運營商實際上在這裏做?

  4. 如果它是一個參數,很難從render簽名明白:

    返回的結果渲染年代由選項哈希決定。主要的選項是:

    • :partial - 見ActionView::PartialRenderer
    • :file - 呈現一個明確的模板文件(這曾經是舊的默認),添加:locals那些通過。
    • :inline - 呈現類似於它是如何在控制器完成內聯模板。
    • :text - 呈現在了傳遞的文本。
+1

的按鈕,SO說:「問了''問題」 ..期待通過谷歌 –

+0

每這些子彈應該是一個完全不同的問題。儘管它們都基於相同的代碼片段,但它們完全不相交。 –

+0

關於你最近刪除的問題,你必須調用'開始()'在一個線程,而不是'的run()'如果你想在不同的線程運行run方法中的代碼。否則不會創建後臺線程。 –

回答

1

在未來,請儘量讓每一個崗位的問題。

  1. RenderingHelper是一個模塊,並且經由include某處是可用它的方法。詳細瞭解Ruby的modules是如何工作的。
  2. 部分文件名始終以下劃線prfixied,你的部分將位於app/views/ingredients/_form.html.erb
  3. 兩個:form:locals是哈希傳遞在選擇鍵來呈現;爲:locals的corrpsponding值是一個嵌套的哈希值,其中包含一個鍵,:form它的值是一個名爲recipe_form一個局部變量。如果你明確指定一些可選標點符號的,這可能是比較明顯的:

    <%= render({:partial => 'ingredients/form', :locals => {:form => recipe_form}}) %> 
    
  4. 紅寶石(和Rails特別是)在鍵/值散列的形式使用的參數可變長度的名單。一旦你理解了基本語法

0

2."ingredients/form"不是代碼,他們是不難理解和使用在所有 - 這是一個字符串。它是指_form部分爲ingredient模型。它位於app/views/ingredients/_form.erb.html

:locals => { ... }意味着render功能越來越與符號:locals作爲它的鍵映射條目。 render知道如何處理該地圖做。

這不是「雙重任務」,那就是在:locals鍵的值是地圖。 =>,或「散列火箭」,是用於向地圖鍵分配映射值的Ruby 1.8/1.9的語法。在Ruby 1.9,你可以使用快捷方式,locals: { ... }

(IMO這是更具可讀性取決於值 - 當值的鍵,我認爲新的語法是令人髮指的,否則,我喜歡它。)

4.如何簽名難以理解?爭論是選項的散列。