我创建了一个应用程序,用户可以在其中创建Max Rep of weight举重。它在开发中运行良好但是当它进入生产时,当我尝试创建一个新的RM时,它会给我以下错误:
8ms完成500内部服务器错误(ActiveRecord:1.0ms) ActionView :: Template :: Error(#的未定义方法`数量' RM:0x007ffa2bf0cb48
我想现在为什么以及如何解决这个问题。
新形式的RM:
<div class="col-md-12 col-md-offset-3">
<%= form_for([@user, @rm]) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.select :content, ['Back squat', 'Front squat', 'Deadlift',
'Sumo Deadlift', 'Sumo Deadlift High Pull',
'Power Snatch', 'Power Clean',
'Squat Clean', 'Muscle Snatch',
'Clean & Jerk', 'Thruster', 'Push Jerk',
'Split Jerk', 'Press',
'Push press', 'Cluster', 'Overhead Squat']%>
<%= f.label :quantity, "Peso levantado" %>
<%= f.number_field :quantity %>
<%= f.hidden_field :user_id, value: current_user.id %>
<%= f.submit "Crear", class: "btn btn-primary" %>
<% end %>
RM控制器:
class RmsController < ApplicationController
before_action :logged_in_user, only: [:create, :destroy]
before_action :load_user, only: [:create, :destroy]
def new
@rm = Rm.new
@user = User.find(params[:user_id])
end
def create
@rm = @user.rms.build(rms_params)
if @rm.save
flash[:success] = "Repeticion maxima creada"
redirect_to user_rms_path
else
render 'new'
end
end
def index
@rms = Rm.where(user_id: params[:user_id])
end
def destroy
@user = User.find(params[:user_id])
Rm.find(params[:id]).destroy
flash[:success] = "Repeticion maxima eliminada"
redirect_to user_rms_path
end
private
def rms_params
params.require(:rm).permit(:user_id, :content, :quantity)
end
def load_user
@user = User.find(params[:user_id])
end
end
答案 0 :(得分:0)
您可以运行rails db:migrate:status
以查看是否有一些待定迁移。
或者,如果您有任何机会忘记添加该列,您可以使用rails控制台(我认为最快的方式)检查模型是否具有此类属性,您可以运行heroku run rails console
然后在内部检查Rm.new
并查看这些属性是否与您的实际代码一致。