2013-02-12 61 views
3

我得到錯誤的部分線#1:undefined local variable or method 'level'傳遞多個變量部分

代碼在我看來:

<div id="comments"> 
    <% level = 0%> 
    <% @comments.each do |comment| %> 
     <%=render partial: 'comments/single_comment', locals: {level: level, comment: comment} %> 
    <% end %> 
    <% if 0 < level %> 
    <% (level).times do %> 
    </div> 
    <% end %> 
    <% end %> 
    </div> 
</div> 

和部分第一行:

<% if comment.level < level %> 
    <% (level - comment.level).times do %> 
    </div> 
    <% end %> 
<% end %> 

任何想法有什麼錯這裏?

+0

內的部分嘗試使用'@ comment'和'@ level'也許 – 2013-02-12 18:35:08

+0

有趣的是'comment'變量部分作品, '級別'不。這是因爲我在塊之前設置了它嗎? – 2013-02-12 18:37:25

+0

你確定'Comment'有一個名爲'level'的列嗎? – gabrielhilal 2013-02-12 18:38:00

回答

2

看起來像這段代碼應該是工作(它不是很好,但它應該是工作) 我覺得你在部分代碼的其他地方使用你的partial(comments/single_comment)的問題,我們沒有看到沒有「地方級」 :)

+0

不幸的是:(只需運行grep來仔細檢查它。 – 2013-02-12 21:33:15

+0

我可以在這裏看到「應用程序跟蹤」嗎?) – 2013-02-12 22:40:48

1

好像代碼是正確的..嘗試檢查,如果你有使用single_comment文件名的局部視圖...,你也可以用集合,而不是做一個循環

<%= render partial: 'comments/single_comment', collections: @comments, locals: { level: level } %> 
+0

在'views'中運行'grep -r'single_comment'.'目錄,這是我使用它的唯一地方(感謝收藏提示) – 2013-02-12 21:31:49

0

您正在以錯誤的方式將參數傳遞給partial。將其更新爲以下內容。

<%=render partial: 'comments/single_comment', locals: => {:level => level, :comment => comment} %> 

現在你可以在諧音訪問您的對象如下

<% if locals[:level] < level %> 
    <% (level - locals[:level]).times do %> 
    </div> 
    <% end %> 
<% end %>