我在尝试创建博客应用程序时遇到以下错误。任何想法为什么?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