【发布时间】:2017-04-30 10:19:11
【问题描述】:
我创建了一个应用程序,用户可以在其中创建最大举重次数。它在开发中运行良好,但是当它投入生产时,当我尝试创建一个新的 RM 时,它给了我以下错误:
在 8 毫秒内完成 500 次内部服务器错误(ActiveRecord:1.0 毫秒) ActionView::Template::Error (undefined method `quantity' for # 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
【问题讨论】:
-
您可能错过了迁移,即
quantity在生产数据库中不存在
标签: ruby-on-rails ruby model-view-controller