2011-07-21 98 views
0

我有content_tag問題成幫手,這段代碼content_tag不會返回空白

def renderize(place_holder) 
    content_tag(:div, "hello") do 
     @raw_estimate.field_estimates.where(:field_position_id => FieldPosition.where(:place_holder => place_holder).first).each do |field| 
     if field.field_type.alias == "input" 
      content_tag :div do 
      field.is_validate ? label_value = "*#{field.name}" : label_value = field.name 
      content_tag(:label_tag, label_value) + 
      text_field_tag("estimate[field_#{field.name.downcase.gsub(/\W+/, '')}]") 
      end 
     end 
     end 
    end 
    end 

不返回任何內容,我缺少什麼? 謝謝

+0

你叫<%= renderi ze(arg)%>? – apneadiving

+0

@apneadiving是我做了<%= renderize(「user-data」)%>。我也嘗試過使用'def renderize(place_holder)content_tag(:div,「hello」)end'並輸出結果,我認爲這是與每個塊相關的東西。 –

+1

可怕的價值是什麼:@ raw_estimate.field_estimates 。:(field_position_id => FieldPosition.where(:place_holder => place_holder).first) – apneadiving

回答

0

此行是可疑的:

:field_position_id => FieldPosition.where(:place_holder => place_holder).first 

至於我能理解,左側部分是一個ID,而右邊部分返回對象FieldPosition中,而不是它的ID。這就是爲什麼沒有對象返回,而你的幫手沒有內容。

+0

不,在Rails中你可以傳遞一個對象或object.id,這是非常相同的 – apneadiving

+0

你是對的,我沒有注意到這個錯誤,但修好後,我有同樣的行爲,將每個入口集中在一起,並且它起作用。謝謝 –

0

作爲另一個答覆中提到的陣列,使用每個將無法正常工作 - 它不會返回塊的內部內容。只是作爲一個例子,嘗試在IRB運行以下命令:

result = 1.upto(3) do |x| x; end 

結果將是「1」

這是你的代碼的劑試驗,嘗試一下,看看 - 它不會返回任何東西:

def random_test 
    content_tag(:div, "hello") do 
     1.upto(3) do |x| 
     content_tag(:p, x) 
     end 
    end 
    end 

相反,你需要收集你的迭代器的輸出,東西沿着這些線路:

def random_test 
    content_tag(:div, "hello") do 
     1.upto(3) do |x| 
     content_tag(:p, x) 
     end 
    end 
    end