Es könnte wie eine Neuling Frage aussehen, aber ich kann mich nicht darum kümmern. Rails sagt mir, dass die Methode nicht definiert ist, auch wenn ich in der Konsole darauf zugreifen kann. Mir fehlt offensichtlich etwas ...NoMethodError in Controller # show - Verschachteltes Modell
Hier ist meine routes.rb Datei:
Rails.application.routes.draw do
root 'static_pages#home'
resources :users do
resources :bodies
end
end
Hier wird die User-Modell
class User < ApplicationRecord
has_many :bodies, dependent: :destroy
end
Hier ist der Körper Modell
class Body < ApplicationRecord
belongs_to :user
end
Hier ist der Bodies Controller
class BodiesController < ApplicationController
def new
@user = User.find(params[:user_id])
@body = @user.bodies.new
end
def create
@body = current_user.bodies.build(body_params)
if @body.save
redirect_to user_body_path(@body)
else
render 'new'
end
end
def show
@user = User.find(params[:user_id])
@body = @user.bodies(params[:id])
end
def index
@bodies = Body.all
end
private
def body_params
params.require(:body).permit(:weight, :sex, :age, :fat)
end
end
Die Erstellungsaktion funktioniert einwandfrei. Ich kämpfe nur die Show-Aktion zu erhalten zu arbeiten, obwohl die richtigen Parameter entlang geführt werden:
Showing /Users/rodolphegeant/code/FFL/app/views/bodies/show.html.erb where line #9 raised:
undefined method `sex' for #<Body::ActiveRecord_Associations_CollectionProxy:0x007f820f65da90>
Did you mean? send
Extracted source (around line #9):
7
8
9
10
11
12
Hello from my Body
<%= @body.sex %> | <%= @body.age %> | <%= @body.weight %> | <%= @body.fat %>
Rails.root: /Users/rodolphegeant/code/FFL
Application Trace | Framework Trace | Full Trace
app/views/bodies/show.html.erb:9:in `_app_views_bodies_show_html_erb___2597620731841156962_70098290142700'
Request
Parameters:
{"user_id"=>"1", "id"=>"3"}
Wenn ich an die Konsole gehe I @ body.sex oder @ body.age oder ein anderes Verfahren ausgeführt werden kann, dass entspricht den Attributen, die ich suche ....
Vielen Dank im Voraus für die Hilfe bei der Lösung dieses Problems.
Codingly Ihnen,
Rodolphe
Ja perfekt! Danke Ahmed :) –