【问题标题】:Error in production ActionView::Template::Error生产 ActionView::Template::Error 中的错误
【发布时间】: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


【解决方案1】:

您可以运行 rails db:migrate:status 以查看您是否有一些待处理的迁移。

或者,如果您忘记添加该列,您可以使用 rails 控制台(我认为是最快的方法)来检查模型是否具有此类属性,您可以运行 heroku run rails console 然后在内部检查 @987654323 @ 并查看这些属性是否与您的实际代码一致。

【讨论】:

    猜你喜欢
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多