J'ai rencontré l'erreur suivante lors de la création d'une application de blog. Des idées pourquoi?NoMethodError dans 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">
De ma compréhension limitée, il essaie de me dire qu'il n'y a pas de champ « title » dans ma table de base de données « article », mais comme vous pouvez le voir la desc ci-dessous il y a Cleary un champ 'titre'!
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)
Aide ?!
Bernard
Ps. J'espère que la mise en forme de la table ci-dessus tient bon ... ne semble pas très bien dans l'aperçu!
Le code du contrôleur pour l'appel correspondant est le suivant.
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
L'erreur suggère que vous avez reçu un tableau entier dans lequel vous pensez avoir un élément du tableau. Autrement dit, un article individuel a un titre, mais pas le tableau contenant tous les objets d'article. (Je ne travaille pas avec Rails, mais je me souviens qu'il y a un peu de magie dans la façon dont il gère les singuliers et les pluriels.Ce souvenir est assez vague, alors n'hésitez pas à l'ignorer.) – Telemachus
Dans ce cas, pensez à déboguer un peu avant envoi à un forum: par exemple output @ article.class – Alexey