I'm having trouble with my index.html.erb file.
By the way, @events = Event.all
15 <% @events.each do |event| %>
16 <tr>
17 <td><%= event.name %></td>
18 <td><%= event.maker_id %></td>
19 <td><%= event.maker.name %></td>
20 <td><%= event.category_id %></td>
21 <td><%= event.category.kind%></td> #error
22 <td><%= event.location_id %></td>
23 <td><%= event.location.area %></td>
24 <td><%= event.description %></td>
25 </tr>
26 <% end %>
My Event table is associated with (has the foreign_keys of) my Maker, Category, and Location tables.
If event.maker.name works and prints the name of the associated Maker, how come the same logic/syntax doesn't happen with event.category.kind and event.location.area?
Instead, I receive:
NoMethodError in Events#index
Showing /Users/-/app/views/events/index.html.erb where line #21 raised:
undefined method `category' for # Event:0x007fb4c5b0f960
...where line #21 is event.category.kind
My schema.rb is:
create_table "categories", force: :cascade do |t|
t.string "kind"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "events", force: :cascade do |t|
t.string "name"
t.string "category_id"
t.text "description"
t.string "maker_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "location_id"
end
create_table "locations", force: :cascade do |t|
t.string "area"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "makers", force: :cascade do |t|
t.string "name"
t.string "password"
t.datetime "created_at"
t.datetime "updated_at"
t.string "password_digest"
end
Basically I want to output data from the associated tables, not the foreign_key id numbers themselves. Like this:
1 <% @events.each do |event| %>
2 <tr>
3 <td><%= event.name %></td>
4 <td><%= event.maker.name %></td>
5 <td><%= event.category.kind %></td> #this would be an ERROR
6 <td><%= event.location.area %></td> #this would be an ERROR
7 <td><%= event.description %></td>
8 </tr>
9 <% end %>
Aucun commentaire:
Enregistrer un commentaire