だけ が は通じ多く持っているか持っていますし、多くの行方不明のIDに属し
モデル「をワークアウトのIDが存在しなければならない」重み
を私がしようとすると、私はこのエラーを取得していますここでは、簡単なワークアウトのログを作成し、作成しようclass Workout < ApplicationRecord
belongs_to :user
has_many :exercises
has_many :weights, through: :exercises
accepts_nested_attributes_for :exercises, :allow_destroy => true
accepts_nested_attributes_for :weights, :allow_destroy => true
validates :bodypart, presence: true, length: { maximum: 255 }
end
class Weight < ApplicationRecord
belongs_to :exercise
belongs_to :workout
validates :amount, presence: true, length: { maximum: 255 }
validates :reps, presence: true, length: { maximum: 255 }
end
class Exercise < ApplicationRecord
belongs_to :workout
has_many :weights
accepts_nested_attributes_for :weights
validates :name, presence: true
validates_associated :weights
end
私はいくつかのことを読んだ後に、多くのスルーがあることがこれらの関連付けのオプションになると思ったが、今はそれほど確かではない。私がエクササイズのために体重を試してみると、エクササイズIDが得られますが、何回も試してもエクササイズIDを得ることはできません。私は単純にコントローラの問題か、もし私がここでもっと大きなものを見逃しているのかどうかは分かりません。
私の現在の重みコントローラ
class WeightsController < ApplicationController
before_action :authenticate_user!
def new
@weight = Weight.new
end
def create
@exercise = Exercise.find(params[:exercise_id])
@weight = @exercise.weights.build(weight_params)
if @weight.save
flash[:notice] = "Set saved"
redirect_to exercise_path(@exercise)
else
redirect_to exercise_path(@exercise)
flash[:notice] = "#{@weight.errors.full_messages.to_sentence}"
end
end
def edit
end
def update
end
def destroy
weight = Weight.find(params[:id])
@weight.destroy
redirect_to root_path
end
private
def weight_params
params.require(:weight).permit(:amount, :reps)
end
end
routes.rbを
Rails.application.routes.draw do
devise_for :users, controllers: { omniauth_callbacks: "callbacks" }
root 'articles#index'
get '/demo', to: 'static_pages#demo'
get '/about', to: 'static_pages#about'
get '/test', to: 'static_pages#index'
resources :articles
resources :workouts do
resources :exercises
end
resources :exercises do
resources :weights
end
resources :workouts do
member do
put :is_finished
put :unfinish
end
end
resources :exercises do
member do
put :is_finished
put :unfinish
end
end
resources :books, :only => :index
end
演習コントローラ私はいつも私のウェイトモデルが、それに設定workout_idためのID列を持っている
class ExercisesController < ApplicationController
before_action :authenticate_user!
# before_action :set_exercise, except: [:index, :new, :create]
def new
@exercise = Exercise.new
@exercise.weights.new
end
def index
@workout = Workout.find(params[:workout_id])
@exercise = @workout.exercises
end
def create
@workout = Workout.find(params[:workout_id])
@exercise = @workout.exercises.build(exercise_params)
if @exercise.save
redirect_to workout_exercise_path(@workout, @exercise)
flash[:notice] = "Exercise created, enter weight and reps for your first set"
else
redirect_to @workout
flash[:notice] = "#{@exercise.errors.full_messages.to_sentence}"
end
end
def edit
end
def update
@exercise = Exercise.find(params[:id])
if @exercise.update_attributes(exercise_params)
redirect_to exercise_path(@exercise)
else
flash[:notice] = "Something went wrong"
end
end
def show
@exercise = Exercise.find(params[:id])
@weights = @exercise.weights.order('created_at DESC').paginate(page: params[:page], per_page: 5)
end
私が演習を作成することができるときはいつでもNULLを設定します。また、レールコンソールでは、私はワークアウトを見つけて@workout.weightsを呼び出すことができ、それはちょうど良いトレーニングに関連付けられているウェイトを返します。体重モデルに取り込むトレーニングIDを取得できません。多くの人が持っていると思っていることを思い出してください。私は運が無ければ "inverse_of"を試しました。どんな助けもありがとう。