我在嘗試創建博客應用程序時遇到以下錯誤。任何想法爲什麼?Ruby on Rails中的NoMethodError
NoMethodError in Articles#show
Showing app/views/articles/show.html.erb where line #1 raised:
undefined method `title' for []:Array
Extracted source (around line #1):
1: <h2><%= @article.title %></h2>
2:
3: <% if @article.category %>
4: <p class="category">
從我有限的瞭解它試圖告訴我,有我在「文章」的數據庫表中沒有「標題」字段,但是你可以看到從遞減下面有克利'標題'字段!
mysql> desc articles;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | YES | | NULL | |
| title | varchar(255) | YES | | NULL | |
| synopsis | text | YES | | NULL | |
| body | text | YES | | NULL | |
| published | tinyint(1) | YES | | 0 | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| published_at | datetime | YES | | NULL | |
| category_id | int(11) | YES | | 1 | |
+--------------+--------------+------+-----+---------+----------------+
10 rows in set (0.01 sec)
幫助?!
Bernard
Ps。希望上面表格的格式能夠保留...在預覽中看起來不太好!
相關調用的控制器代碼如下。
def show
if is_logged_in? && @logged_in_user.has_role?('Editor')
@article = Article.find(params[:id])
else
@article = Article.find_all_by_published(params[:id], true)
end
respond_to do |wants|
wants.html
wants.xml { render :xml => @article.to_xml }
end
end
錯誤提示您已收到整個陣列,您認爲自己有數組中的一項。也就是說,一篇文章有一個標題,但不是包含所有文章對象的數組。 (我沒有使用Rails,但是我記得它在處理單數和複數時有一些神奇的功能,因爲這種回憶很模糊,所以請隨時忽略它。) – Telemachus 2010-07-20 21:11:02
在這種情況下,請考慮先調試一下發送到論壇:例如輸出@ article.class – Alexey 2010-07-21 00:13:07