它可能看起来像一个新手问题,但我无法理解它。 Rails告诉我,即使我可以在控制台中访问它,也没有定义该方法。我显然错过了一些东西......
这是我的routes.rb文件:
Rails.application.routes.draw do
root 'static_pages#home'
resources :users do
resources :bodies
end
end
以下是用户模型
class User < ApplicationRecord
has_many :bodies, dependent: :destroy
end
这是Body模型
class Body < ApplicationRecord
belongs_to :user
end
这是身体控制器
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
创建操作正常。我只是努力让Show动作起作用,尽管传递了正确的参数:
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"}
当我进入控制台时,我可以运行@ body.sex或@ body.age或任何其他与我正在寻找的属性相对应的方法....
非常感谢您提前帮助我解决此问题。
编码你的,
鲁道夫
答案 0 :(得分:0)
HI在控制器中显示操作,将@user.bodies(params[:id])
替换为Body.find(params[:id])
答案 1 :(得分:0)
您应该对将从与用户模型的关联返回的记录运行查询查询。
def show
@user = User.find(params[:user_id])
@body = @user.bodies.find(params[:id])
end