繁体   English   中英

Ruby on Rails-未定义的方法-Rails 3.2.13

[英]Ruby on Rails - Undefined Method - Rails 3.2.13

不幸的是,我们的Ruby Developer不在城里,我们遇到了一个问题,需要解决此问题,直到他回来。 我受命去寻找它。

我正在尝试访问我们的数据库视图之一hr_accounts_view,其中包含我们需要合并到现有页面(依赖于完全不同的表)中的必要数据。 我们试图引入的只是视图中的“ 状态”列,因此,我已尽力使模型/控制器/视图尽可能简单。

我的hr_account_view模型:

class HrAccountView < ActiveRecord::Base

    self.table_name = 'hr_accounts_view'

    include Savable

    # belongs to :hr_account
    belongs to :employee, foreign_key: :id


    validates :Status, presence: true



    end

Hr_Account_Views控制器:

class HrAccountViewsController < ApplicationController

load_and_authorize_resource

def show
    @HrAccountView.Status = HrAccountView.Status
end

private

end

我也将视图分离到视图内自己的文件夹中,以使其与新控制器相关联。 我们正在常规显示页面中渲染此页面。

正在我们的节目hraccountsview / _apptment.html.erb中调用页面:

<table>
  <tr>
    <td>
     Status<br />   
         <%= display_text_field @HrAccountView.Status %> 
    </td>
  </tr>
 </table>

我仔细阅读了许多有关此问题的文章,看起来问题似乎是控制器中的声明丢失了,但是我尝试了各种组合。 不幸的是,我在ruby和rails中所做的最重要的事情是页面的细微变化和一些搜索功能,但是不必添加额外的表/视图。

根据错误消息,我为nill:NillClass有一个未定义的方法'Status',它正在呈现的页面的第5行上发生。 如果我输入了抢救nil ,则该页面至少会显示标题,但没有数据。 正在预览的记录当前具有“状态”列的填充记录。 这使我相信模型而不是控制器存在问题,但是在这一点上,我一直在旋转轮子,试图找出丢失的连接在哪里。

有谁知道我在哪里丢失连接?

非常感谢您的帮助!

Rails版本3.2.13数据库版本:SQL 2012

def show @HrAccountView.Status = HrAccountView.Status end

除非我缺少任何内容, @HrAccountView不会在任何地方定义,因此它是一个nil对象,这意味着您无法访问其上的Status属性。 您应该首先在其中声明一些内容,例如@HrAccountView = HrAccountView.find(params[:id]) 这将从您的视图(如果找到)中将一条记录加载到变量中。

有一些约定可能会有所帮助:

属性(列的模型版本)以小写形式指定。 所以:

validates :status, presence: true

实例变量相同。 例如:

def show
  @status = HrAccountView.Status
end

我怀疑HrAccountView.Status也可能是错误的,尽管可能不是。 我们需要查看控制器中还有什么其他情况。 通常,会有一些操作使用请求中的参数值在模型上进行find

控制器和视图中的变量名称必须匹配:

<%= display_text_field @status %>

在Ruby中,大写字符串(例如Status )是常量,小写字符串是对变量或方法的引用。 如果以“ @”为前缀,则是对实例变量的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM