mrb*_*rnz 0 ruby ruby-on-rails
我在尝试创建博客应用程序时遇到以下错误.有什么想法吗?
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">
Run Code Online (Sandbox Code Playgroud)
从我有限的理解,它试图告诉我在我的'文章'数据库表中没有'标题'字段,但是你可以从下面的desc看到有一个清晰的'标题'字段!
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)
Run Code Online (Sandbox Code Playgroud)
救命?!
伯纳德
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
Run Code Online (Sandbox Code Playgroud)
我想你正试图直接从数组中访问title元素.在访问属性之前,您需要遍历每个对象.
for @article in @articles do |a|
<h2><%= a.title %></h2>...
end
Run Code Online (Sandbox Code Playgroud)
只要确保你的控制器......
@articles = Article.find(:all, :conditions => '...')
Run Code Online (Sandbox Code Playgroud)
更新:
这部分代码返回一个集合.
@article = Article.find_all_by_published(params[:id], true)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |